如何使用JavaScript从div标签中过滤掉HTML标签

时间:2012-09-19 12:48:01

标签: javascript domparser

我有这个HTML代码:

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

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

9 个答案:

答案 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);

Fiddle

答案 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;