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