#javascript #jquery
#javascript #jquery
Вопрос:
<span id="tcount-1">100</span>
<span id="tcount-2">100</span>
<span id="tcount-3">100</span>
То, что я пытаюсь сделать, это захватить значение в пределах span id= tcount-X (где X может быть любым значением идентификатора), а затем вычесть из него 1.
Итак, я знаю, что могу легко скрыть значение, выполнив…
$('span#tcount-' com_id).hide();
но как только я сделаю что-то вроде…
var countit = $('span#tcount-' com_id).val();
… он ломается. Есть идеи, что я делаю не так?
Комментарии:
1. Зачем нужна дополнительная переменная? $(‘span [id^=»tcount»]’)
2. @Kai Предположительно, ему нужно вычесть единицу из определенного диапазона, а не из каждого диапазона.
Ответ №1:
var s = $('span#tcount-' com_id);
s.html(s.text()*1 - 1);
Что касается использования *1
вместо parseInt
того, чтобы видеть проблемы с этим:
(источник: phrogz.net )
и влияние на производительность здесь:
http://jsperf.com/convert-string-to-number-techniques
(На самом деле вам не нужно *1
, поскольку вы вычитаете, но я включил его, исходя из предположения, что в какой-то момент вы можете захотеть добавить 1, и в этот момент вы столкнетесь с проблемами конкатенации строк, если сначала не преобразуете строку в число.)
Ответ №2:
.val()
для настройки полей формы. То, что вы хотите .text()
, это то, что будет извлекать СОДЕРЖИМОЕ диапазона, а не его «значение» (в любом случае промежутки не могут иметь значений). Обратите внимание, что это приведет к извлечению содержимого в виде строки, поэтому вам нужно будет parseInt() и еще много чего для выполнения вашей математики.