2014-04-16 2 views
0

저는 프로그래밍에 익숙하지 않아서 해결하기가 쉽다면 미리 사과드립니다.Javascript의 If 문에 걸림

필자는 기술을 향상시키기 위해 작은 JS 기반 웹 사이트를 디자인 한 다음 이전 웹 사이트를 완성한 후 다른 복잡한 웹 사이트로 이동했습니다.

저는 현재 특정 비디오 게임 (Dark Souls II에 궁금한 점이있는 경우)에서 캐릭터를 계획하는 데 도움이되는 웹 사이트에서 작업하고 있습니다. 이 웹 사이트에는 8 개의 시작 수업 중 하나를 선택할 수있는 드롭 다운 메뉴가 있습니다. 하나를 선택하면 특정 클래스의 통계를 보여주기 위해 웹 사이트가 업데이트됩니다.

각 클래스의 시작 통계를 보여주는 것 외에도 미리 캐릭터를 계획하기 위해 통계를 늘리거나 줄일 수있는 섹션이 있습니다. 이것은 내가 내 문제에 부딪히는 곳이다.

내가 사용하는 증가 함수는 정상적으로 작동하지만 stat 함수를 감소시키는 데 문제가 있습니다. 이상적으로는, 나는 그것을 stat를 감소 시키길 원하지만 그 stat의 시작점을 넘어서는 것이 아니다. 10 이하로 시작한 스탯을 10 이하로 줄이기 전까지는 잘 작동합니다.

예를 들어, Warrior 클래스는 7 Vigor로 시작됩니다. 최대 9까지 늘린 다음 다시 7로 줄이십시오. 그러나 10으로 늘린 다음 감소 단추를 시도해도 아무 것도 작동하지 않습니다. 그러나 Vigor가 10보다 큰 클래스의 경우 전혀 문제없이 늘리고 줄일 수 있습니다. 내가 사용하고있는 코드는 다음과 같습니다 :

function decreaseVigor() { 
    for (i = 0; i < classStats.length; i++) { 
    if (chosenClass == classStats[i][0]) { 
     if (vigor.innerHTML > startingVigor.innerHTML) { 
     soulLevel.innerHTML = classStats[i][1] -= 1; 
     vigor.innerHTML = classStats[i][2] -= 1; 
     } 
    } 
    } 
} 

두 번째 If 문 내에 문제가 있다는 것을 알고 있지만 왜 작동하지 않는지는 알 수 없습니다. Warrior 클래스의 startingVigor는 7입니다. 그렇다면 왜 Vigor를 10 이상으로 증가 시키면 감소시키지 않을까요? 이 도움이 경우

, 여기에 모든 클래스에 대한 통계는 다음과 같습니다

그들은 순서대로 이동
classStats = [ 

["warrior", 12, 7, 6, 6, 5, 15, 11, 5, 5, 5], 
["knight", 13, 12, 6, 7, 4, 11, 8, 9, 3, 6], 
["swordsman", 12, 4, 8, 4, 6, 9, 16, 6, 7, 5], 
["bandit", 11, 9, 7, 11, 2, 9, 14, 3, 1, 8], 
["cleric", 14, 10, 3, 8, 10, 11, 5, 4, 4, 12], 
["sorcerer", 11, 5, 6, 5, 12, 3, 7, 8, 14, 4], 
["explorer", 10, 7, 6, 9, 7, 6, 6, 12, 5, 5], 
["deprived", 1, 6, 6, 6, 6, 6, 6, 6, 6, 6] 

]; 

: SoulLevel (또는 총 레벨), 활력, 지구력, 활력,의 조화, 힘, 민첩, 적응력, 지성, 신앙.

Knight 클래스를 선택하면 beginVigor가 12이므로 자유롭게 증가 또는 감소 할 수 있습니다. 10에서 10 이상의 숫자를 늘릴 때 왜 작동하지 않는지 알고 싶습니다.

제공 할 수있는 도움에 감사드립니다.

답변

2

당신은 비교하는 문자열이 아닌 숫자

vigor.innerHTML > startingVigor.innerHTML 

콘솔에서 볼 수 있습니다

> "7" > "8" 
false 
> "7" > "10" 
true 
> 7 > 8 
false 
> 7 > 10 
false 

사용으로 parseInt /에서는 parseFloat는

parseInt(vigor.innerHTML,10) > parseInt(startingVigor.innerHTML,10) 
+0

빠른 답장을 보내 주셔서 감사합니다. 이것은 완벽하게 작동했습니다! 괜찮 으면, 이것이 무엇을하는지 간단히 설명해 주시겠습니까? 나는 Google에 그것을 시도하고있다, 그러나 나는 진짜로 이해하고 있지 않다. 기본적으로 String을 Integer로 바꾼다는 것을 알았지 만 괄호 안에 10이 왜 있습니까? – ClaytonAlanKinder

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt – epascarello

+0

@CaptainKick 해결책이 효과가 있다면 수용된 대답으로 표시하십시오. –

0

나는이를 만드는 것 같아요 유효성 검사 문자열로. parseInt() 또는 parseFloat()를 시도하십시오. 같은

의 somethig에 : 당신이 value.innerHTML를로드

parseInt(vigor.innerHTML, 10); /* or maybe */ parseFloat(vigor.innerHTML, 10) 

당신은 문자열을 얻을 당신은 숫자로 변환 할 필요가있다.