2010-12-12 2 views
3

Используя jQuery, я хотел бы извлечь номер из <span> и использовать его для вычисления нового значения.Как извлечь номер из HTML-диапазона с помощью jQuery?

<div class="post-100" data-postid="100"> 
    <span class="score">3</span> 
</div> 

У меня есть общая идея, но я не могу понять, как ссылаться на существующее значение диапазона:

if (response.newvoteid == null) 
{ 
    $(".post-" + $(this).data("postid") + " .score").text(
      parseInt(**EXISTING VALUE + 1 OR -1**)); 
} 

Update: Я сейчас, используя следующие, не в состоянии вычислить новое значение, но просто добавляет номер в текст. Например, <span class="score">3</span> становится <span class="score">31</span>

var number = $(".post-" + $(this).data("postId") + " .score").text(); 
$(".post-" + $(this).data("postId") + " .score").text(number + 1); 
+1

Почему вы не пишете '$ (это) .find ('Score.')'? – SLaks

+0

SLaks, хорошая идея. Я нашел способ найти счет, но теперь он добавляет новый номер к диапазону вместо добавления вычисления. Посмотрите мое обновление, если этот комментарий не имеет смысла. – Mohamad

+1

Для этого используется 'parseInt()'. В противном случае он думает, что вы делаете конкатенацию. Кроме того, есть более простой способ обновить старое значение. [См. Мой ответ] (http://stackoverflow.com/questions/4423750/how-do-i-extract-a-number-from-an-html-span-using-jquery/4423818#4423818). – user113716

ответ

4

Просто передать функцию .text(), которая возвращает старое значение увеличивается на единицу (или уменьшенное):

$(".post-" + $(this).data("postid") + " .score").text(function(i, txt) { 
    return (parseInt(txt, 10) + 1); // Returns the old value, 
});          //  plus (or minus) 1. 
0
$(spanId).text(); 

получит значение/текст в тег диапазона.

так что-то вроде:

var number = $(spanId).text(); 

получит вас значение, то вы можете проверить, если его действительное число и разобрать, как вам нравится.

var intRegex = /^\d+$/; 

var number = $(spanId).text(); 
if(intRegex.test(number)) { 
...//proceed cuz it's a number 
} 
+0

Это много дополнительной работы, когда вы можете просто использовать parseInt. –

1
<span class="score">3</span> 

у вас есть имя класса уже определено, поэтому, используя имя класса вы можете получить текст внутри него, как показано ниже

$(.score).text(); 

апи здесь

http://api.jquery.com/text/

в выше код получает вас 3

+1

Вышеприведенный код дает вам синтаксическую ошибку – Eric

4

ParseInt() представляет собой вспомогательный метод, который требует строку, которая будет анализироваться в качестве аргумента, как это:

parseInt($(".score").text()) 

Чтобы сделать расчет теперь вы можете добавить свой номер в результате ParseInt():

var newVal = parseInt($(".score").text()) + 1 

его непонятно, как вы хотите выбрать пролет. Можете ли вы объяснить это немного яснее?

Вышеприведенный код выбирает содержимое диапазона через его класс, например.

+0

Ян, выбор диапазона не является проблемой вообще. Проблема заключается в получении расчета. См. Обновление. – Mohamad

+0

Вы должны называть parseInt своим текстовым результатом. Впоследствии вы можете сделать математику. Я обновил свой ответ, чтобы показать операцию добавления. В вашем редактировании вы вызываете + -оператор по типу данных строки (результат функции text()). Это добавит значение к строке. – Jan

Смежные вопросы