我有这个HTML代码:
<div>
756
<span></span>
</div>
使用JavaScript我想从div
标签中检索数字756并将其递增1.从div标签中过滤出<span>
的最佳方法是什么,所以我只得到数字?
答案 0 :(得分:4)
试试这个:
var div = document.getElementsByTagName("div")[0],
content = div.textContent || div.innerText;
所有浏览器都支持 textContent
,除了IE8-并且除了FF4-之外的所有浏览器都支持innerText
。所以使用两者,你应该得到一个稳定的结果。
http://www.quirksmode.org/dom/w3c_html.html
两个属性都使用剥离的HTML标记返回文本内容。
示例:http://jsfiddle.net/HnWxk/(在chrome / ff / ie7中测试)
现在,如果你想增加它,只需:
content++;
它应该输出一个数字:http://jsfiddle.net/HnWxk/3/
答案 1 :(得分: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);
答案 2 :(得分: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 强>
答案 3 :(得分:1)
另一种方法是在没有innerText和textContent的浏览器不兼容的情况下执行此操作。我在使用正则表达式提取数字后使用innerHTML,并且建议在使用parseInt时总是定义基数(只会避免一些奇怪的惊喜,让你发现)并最终递增值。
var theNum = parseInt(document.getElementById('someDiv').innerHTML.match(/\d+/), 10);
alert(theNum+=1)
答案 4 :(得分:0)
最好的解决方案是将数字包装在自己的<span>
中。
如果这不可能(您不创建HTML代码),则可以迭代<div>
的所有子节点。其中一个将是您要定位的文本节点。
答案 5 :(得分:0)
<div id="number">
756
<span></span>
</div>
d = document.getElementById("number")
n = parseInt(d.innerHTML)+1;
alert(n);
答案 6 :(得分:0)
假设这个HTML代码:
<div id="someDiv">
756
<span></span>
</div>
你可以使用它(使用jquery):
var div = $("#someDiv");
div.text(parseInt(div.text()) + 1);
答案 7 :(得分:0)
我在文本上用split来获取数字。
还使用jQuery来获取文本,你可以使用人们在这里使用的其他方法。
var divText = $('div').text();
var contentArray = divText.split('\n');
var yay = parseInt(contentArray[1].trim(), 10);
alert(yay);
alert(yay++);
请参阅小提琴here。
答案 8 :(得分:0)
最好的方法是将数字包装在元素中,但您可以使用this进行解决:
var div = document.getElementById('div')
var num = parseInt((div.innerText) ? div.innerText : div.textContent);
div.childNodes[0].nodeValue = num + 1;