#javascript #jquery #operators
#javascript #jquery #операторы
Вопрос:
У меня небольшая проблема с оператором. У меня есть число, которое либо увеличивается, либо вычитается в зависимости от ввода ключа. Странная вещь заключается в том, что операторы = 1 и = 11 буквально добавляют числа к статическому числу: 60 становится 601 и 6011 вместо 61 и 71.
Вот код, поэтому примите во внимание, что статическое число равно 60:
switch(e.keyCode) {
case 37:
boxID -= 1;
break;
case 38:
boxID -= 11;
break;
case 39:
boxID = 1; // Becomes 601
break;
case 40:
boxID = 11; // Becomes 6011
break;
}
Комментарии:
1. как вы определяете boxID? среда выполнения javascript считает, что это строка
2. Я определяю boxID следующим образом, где идентификатор является номером 60 элемента списка:
var boxID = $('li.selected').attr('id');
3. затем следуйте совету cwolves var boxId = parseInt($(«li.selected»).attr(«id»))
4. Придирка: числовой идентификатор недопустим, см. w3.org/TR/html401/types.html#type-id
Ответ №1:
boxId
в вашем случае это строка. Сначала преобразуйте его в число, используя parseInt(boxId)
или просто boxId << 0
-=
Работает потому, что у него есть только одна функция (вычитание с использованием математики), поэтому boxId
преобразуется к числу перед операцией.
перегружен в JavaScript для обозначения «конкатенации строк ИЛИ математического сложения», поэтому, если boxId
это строка, он выполняет операции со строками.
Комментарии:
1. Не забудьте использовать необязательный параметр radix и вместо этого выполните
parseInt(boxId, 10)
. Это предотвращает обработку «010» как восьмеричного числа.