我有這樣的HTML代碼div標籤中篩選出的HTML標籤:如何從使用JavaScript
<div>
756
<span></span>
</div>
使用JavaScript我想從div
標籤內檢索數756和1.增加它什麼從div標籤中篩選出<span>
所以我只得到了數量的最佳方法是什麼?
我有這樣的HTML代碼div標籤中篩選出的HTML標籤:如何從使用JavaScript
<div>
756
<span></span>
</div>
使用JavaScript我想從div
標籤內檢索數756和1.增加它什麼從div標籤中篩選出<span>
所以我只得到了數量的最佳方法是什麼?
試試這個:
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/
最優雅的解決方案:)。謝謝! – cmplieger
最好的解決辦法是來包裝自己的<span>
數量。 如果這是不可能的(你沒有創建的HTML代碼),您可以遍歷<div>
的所有子節點。其中之一將是您想要定位的文本節點。
您可以使用.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);
它警報的NaN。 –
剛剛在這裏讀到,確實Firefox有「.innerText」的問題。剛剛更新了代碼,以便與Firefox的.textContent一起使用。 – MarcoK
<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>
<div id="number">
756
<span></span>
</div>
d = document.getElementById("number")
n = parseInt(d.innerHTML)+1;
alert(n);
你得到什麼錯誤? – CRDave
收回。抱歉。 Number(...)返回NaN,但parseInt(...)確實返回756 –
假設這個html代碼:
<div id="someDiv">
756
<span></span>
</div>
你可以使用這個(與jquery):
var div = $("#someDiv");
div.text(parseInt(div.text()) + 1);
或者只是'div.text()+ 1'。另外,jQuery沒有被標記,你的代碼將刪除容器內的任何HTML。 – David
大衛!感謝您指出這一點! – Kaeros
標題簡單地用「javascript」表示,如果標題用「jQuery」表示,則答案將是相關的。對不起,這是我將投票答案視爲沒用的原因 – elmuchacho
我用文本分割得到的數字。
還用jQuery來獲取文本,您可以使用此處使用的其他方法的人。
var divText = $('div').text();
var contentArray = divText.split('\n');
var yay = parseInt(contentArray[1].trim(), 10);
alert(yay);
alert(yay++);
查看小提琴here。
假設源代碼中有一個換行符。按'/ \ s?'分割會更好。 –
@JanDvorak你必須使用某種商定的格式,我假設他的例子代表了這種格式。你提供的正則表達式確實更好。 10X。 – bldoron
最好的辦法是包裝在一個元素的數量,但你可以this解決方法:
var div = document.getElementById('div')
var num = parseInt((div.innerText) ? div.innerText : div.textContent);
div.childNodes[0].nodeValue = num + 1;
只是一個其他的方式來做到這一點沒有的innerText和的textContent的瀏覽器不兼容。我在使用正則表達式提取數字後使用了innerHTML,並且建議在使用parseInt時總是定義基數(將簡單地避免讓我發現一些奇怪的驚喜)並最終增加值。
var theNum = parseInt(document.getElementById('someDiv').innerHTML.match(/\d+/), 10);
alert(theNum+=1)
謝謝:)。看起來不錯:) – cmplieger
做到這一點最簡單的方法是把在另一跨度的數量和訪問,而不是用JavaScript – Ratzor
使用DIV新跨越'.innerText'然後parseInt函數(不要忘了基數) – BLSully
是顯示的結構總是相同的,並且數字始終在該div中首先出現?或者你需要更靈活的解決方案? – raina77ow