2012-09-19 31 views
1

我有這樣的HTML代碼div標籤中篩選出的HTML標籤:如何從使用JavaScript

<div> 
    756 
    <span></span> 
</div> 

使用JavaScript我想從div標籤內檢索數756和1.增加它什麼從div標籤中篩選出<span>所以我只得到了數量的最佳方法是什麼?

+0

做到這一點最簡單的方法是把在另一跨度的數量和訪問,而不是用JavaScript – Ratzor

+2

使用DIV新跨越'.innerText'然後parseInt函數(不要忘了基數) – BLSully

+0

是顯示的結構總是相同的,並且數字始終在該div中首先出現?或者你需要更靈活的解決方案? – raina77ow

回答

4

試試這個:

var div = document.getElementsByTagName("div")[0], 
    content = div.textContent || div.innerText; 

textContent被所有的瀏覽器,除了支持IE8-和innerText除了{[4-所有瀏覽器都支持。所以使用這兩種方法,你應該得到一個穩定的結果

http://www.quirksmode.org/dom/w3c_html.html

這兩個屬性返回文本內容剝去HTML標籤。

例子:http://jsfiddle.net/HnWxk/(在Chrome瀏覽測試/ FF/IE7)現在

,如果你想增加它,只是做:

content++; 

應該投出號碼:http://jsfiddle.net/HnWxk/3/

+0

最優雅的解決方案:)。謝謝! – cmplieger

0

最好的解決辦法是來包裝自己的<span>數量。 如果這是不可能的(你沒有創建的HTML代碼),您可以遍歷<div>的所有子節點。其中之一將是您想要定位的文本節點。

1

您可以使用.innerText這樣做。

var div = document.getElementsByTagName("div")[0]; 

var inner; 
if(div.innerText) { 
    inner = div.innerText; 
} else { 
    inner = div.textContent; 
} 

var number = parseInt(inner); 
number++; 
alert(number); 

Fiddle

+0

它警報的NaN。 –

+0

剛剛在這裏讀到,確實Firefox有「.innerText」的問題。剛剛更新了代碼,以便與Firefox的.textContent一起使用。 – MarcoK

1
<div id="mydiv"> 
    756 
    <span></span> 
</div> 

<script> 
    var textNode = document.getElementById("mydiv").childNodes[0]; 
    var number = parseInt(textNode.nodeValue); 
    textNode.nodeValue= number + 1; 
</script>​ 

DEMO

0
<div id="number"> 
    756 
    <span></span> 
</div>​ 


d = document.getElementById("number") 
n = parseInt(d.innerHTML)+1; 
alert(n)​;​ 
+0

你得到什麼錯誤? – CRDave

+0

收回。抱歉。 Number(...)返回NaN,但parseInt(...)確實返回756 –

0

假設這個html代碼:

<div id="someDiv"> 
    756 
    <span></span> 
</div> 

你可以使用這個(與jquery):

var div = $("#someDiv"); 
div.text(parseInt(div.text()) + 1); 
+1

或者只是'div.text()+ 1'。另外,jQuery沒有被標記,你的代碼將刪除容器內的任何HTML。 – David

+0

大衛!感謝您指出這一點! – Kaeros

+0

標題簡單地用「javascript」表示,如果標題用「jQuery」表示,則答案將是相關的。對不起,這是我將投票答案視爲沒用的原因 – elmuchacho

0

我用文本分割得到的數字。
還用jQuery來獲取文本,您可以使用此處使用的其他方法的人。

var divText = $('div').text(); 
var contentArray = divText.split('\n');  
var yay = parseInt(contentArray[1].trim(), 10); 
alert(yay); 
alert(yay++); 

查看小提琴here

+0

假設源代碼中有一個換行符。按'/ \ s?

+0

@JanDvorak你必須使用某種商定的格式,我假設他的例子代表了這種格式。你提供的正則表達式確實更好。 10X。 – bldoron

0

最好的辦法是包裝在一個元素的數量,但你可以this解決方法:

var div = document.getElementById('div') 
var num = parseInt((div.innerText) ? div.innerText : div.textContent); 
div.childNodes[0].nodeValue = num + 1; 
1

只是一個其他的方式來做到這一點沒有的innerText和的textContent的瀏覽器不兼容。我在使用正則表達式提取數字後使用了innerHTML,並且建議在使用parseInt時總是定義基數(將簡單地避免讓我發現一些奇怪的驚喜)並最終增加值。

var theNum = parseInt(document.getElementById('someDiv').innerHTML.match(/\d+/), 10); 
alert(theNum+=1) 
+0

謝謝:)。看起來不錯:) – cmplieger