2013-03-22 3 views
1

Я делаю игру, которая начинается с 15-30 камней в куче, и как пользователь, так и компьютер берут камни до тех пор, пока не будет снят последний камень. Тем не менее, мне нужна функция, чтобы определить, действительно ли количество камней, которое принимает пользователь, означает, что оно меньше или равно 3 и больше 0. Таким образом, моя функция должна возвращать либо true, либо false, но когда я вхожу в " 2 ", он возвращает false. Вот код invovled:Возвращая логические значения из функций

var valid = validEntry(stones, stonesTaken); 

function validEntry(stones, stonesTaken) { 
    if (stones >= stonesTaken) { 
     if(stonesTaken <= 3 && stonesTaken > 0) { 
      return true; 
     } else { 
      return false; 
     } 
    } else { 
     return false; 
    } 
} 

P.S .-- Когда камни идут до трех лет, игрок, ни компьютер может занять больше камней, чем доступны, поэтому первый, если заявление есть.

+0

Когда вы вводите 2 для камней, какова ценность камней? Я предполагаю, что ваш первый условный сбой –

+0

Выглядит здесь: http://jsfiddle.net/2gCD9/ –

+0

В случае, если JSFiddle не работает (это не для меня, когда я пытался открыть свою собственную ссылку). http://codepen.io/anon/pen/oxeKp работает. –

ответ

1

Это потому, что вы сравниваете строки:

"19" >= "2" // false 

Вы должны бросить по крайней мере одну переменную в целое число, при условии, что они обе строки:

stones = parseInt(stones, 10); 
stonesTaken = parseInt(stonesTaken, 10); 
+0

ранее в коде, который я написал: 'var stonesTaken = document.getElementById (" userTake "). Значение * 1; ' , который, как я думал, заставит строку целое число – anandp773

+1

Ну,' validEntry (24, 2) 'дает' true' для меня, поэтому что-то еще должно быть выключено. –

+0

@ пользователь2197420-it. – RobG

0

Убедитесь, что вы пройти целое число или просто используйте parseInt() как @Jared Farrish, упомянутый в комментариях.

function validEntry(stones, stonesTaken) { 
    stones = parseInt(stones); 
    stonesTaken = parseInt(stonesTaken); 
    if (stones >= stonesTaken) { 
     if(stonesTaken <= 3 && stonesTaken > 0) { 
      return true; 
     } else { 
      return false; 
     } 
    } else { 
     return false; 
    } 
} 
Смежные вопросы