2013-01-03 49 views
0

我有一個網格,並通過使用JavaScript獲取選定行的html。使用javascript/jquery獲取特定字符串的數字值

var parentRow1 = document.getElementById('__' + parentrowid).innerHTML; 

這將返回我下面的HTML:

<td class="rgExpandCol"> 
<img title="Expand" onclick="$find(&quot;&quot;)._toggleExpand(this, event); return false;" 
src=" style="border-width:0px;"></td><td>TEST</td><td>my details</td><td>1</td><td>01/06/2011</td> 
<td>198307</td> 
<td>&nbsp;</td> 
<td> 
<span id="lblDCount">2</span> 
</td> 
<td> 
<span id="lblUCount">1</span> 
</td> 
<td> 
<input name="$btn" id="btn"> 
</td> 

有沒有辦法讓這個部分(數量計數不會是一成不變的),並得到那麼數值的一個。減去它:

<span id="lblUCount">1</span> 

所以最後的結果將是<span id="lblUCount">0</span>它是2,則1等

+0

你可以使用parseInt()或者如果它比你說的更復雜使用正則表達式 –

回答

2

試試這個

var count=$('#__' + parentrowid).find('#lblUCount').text(); 

var finalCount=parseInt(count) -1 ; 

更新

分配回..

$('#__' + parentrowid).find('#lblUCount').text(finalCount); 
+0

我得到parentRow1.find不是函數 – Zaki

+0

更新了我的答案..檢查出 – bipen

+0

它確實現在返回值,但我如何將值分配給標籤 – Zaki

5

由於跨度本身具有id,你並不需要首先從該行得到什麼:

var lblUCount = $("#lblUCount"); 
lblUCount.text(parseInt(lblUCount.text(), 10) - 1); 

我懷疑,雖然,你有多個行和span這樣的多個副本。如果我是正確的,那麼你的HTML是無效的,因爲id必須在頁面上是唯一的。所以我想改變它,所以你給那些跨類來代替:

<span class="lblUCount">1</span> 

...這意味着你需要啓動與行,然後使用find找到它:

var lblUCount = $('#__' + parentrowid).find('.lblUCount'); 
lblUCount.text(parseInt(lblUCount.text(), 10) - 1); 

我在那裏使用$帶ID選擇器來獲取該行,然後find帶有類選擇器以在行內找到lblUCount範圍。然後text得到單元格的文字,parseInt把那個變成了一個數字,然後再text設置了這個單元格的新文字。

+0

我試過找到解決方案,它確實給我標籤值..但是當它減去它時說:lblUCount.text不是函數 – Zaki

+0

@ Sam1:如果jQuery被正確加載並且'$'沒有被其他庫使用,上面的工作就很好。 –

2

這是AFAIK最簡單的解決方案。它依賴於.text()的「函數」參數版本,它們都將原始文本傳遞給提供的函數,然後將返回值重新插入到元素中。

$('#lblUCount').text(function(idx, text) { 
    return parseInt(text, 10) - 1; 
}); 
0

您可以用jQuery做這樣的:

var $el = $('#lblUCount'), 
      val = parseInt($el.text()); 
val--; 
$el.text(val); 
相關問題