1

我有这个 HTML 代码:

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

使用 JavaScript 我想从div标签中检索数字 756 并将其递增 1。<span>从 div 标签中过滤掉数字的最佳方法是什么,以便我只得到数字?

4

9 回答 9

4

试试这个:

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/

于 2012-09-19T12:56:49.860 回答
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);

小提琴

于 2012-09-19T12:52:47.683 回答
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>​

演示

于 2012-09-19T12:55:50.340 回答
1

只是另一种方法可以做到这一点,而无需浏览器不兼容 innerText 和 textContent。在使用正则表达式提取数字后,我使用 innerHTML,此外,建议您在使用 parseInt 时始终定义基数(这将避免我让您发现的一些奇怪的惊喜)并最终增加值。

var theNum = parseInt(document.getElementById('someDiv').innerHTML.match(/\d+/), 10);
alert(theNum+=1)
于 2012-09-20T10:50:55.213 回答
0

最好的解决方案是将数字包装在自己的<span>. 如果这是不可能的(您不创建 HTML 代码),您可以遍历<div>. 其中之一将是您要定位的文本节点。

于 2012-09-19T12:51:51.907 回答
0
<div id="number">
    756
    <span></span>
</div>​


d = document.getElementById("number")
n = parseInt(d.innerHTML)+1;
alert(n)​;​
于 2012-09-19T12:56:34.427 回答
0

假设这个 html 代码:

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

您可以使用它(使用 jquery):

var div = $("#someDiv");
div.text(parseInt(div.text()) + 1);
于 2012-09-19T13:02:05.280 回答
0

我在文本上使用 split 来获取数字。
也使用jQuery来获取文本,你可以使用这里人们使用的其他方法。

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

在这里看小提琴。

于 2012-09-19T13:06:28.340 回答
0

最好的方法是将数字包装在一个元素中,但您可以解决此问题

var div = document.getElementById('div')
var num = parseInt((div.innerText) ? div.innerText : div.textContent);
div.childNodes[0].nodeValue = num + 1;
于 2012-09-19T13:06:53.633 回答