Получить значение элемента, а затем вычесть на 1?

#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() и еще много чего для выполнения вашей математики.