如何使用JavaScript从div标记中过滤出HTML标记
我有以下HTML代码:如何使用JavaScript从div标记中过滤出HTML标记,javascript,domparser,Javascript,Domparser,我有以下HTML代码: <div> 756 <span></span> </div> 756 使用JavaScript,我想从div标记中检索数字756,并将其递增1。从div标记中过滤出以便只获取数字的最佳方法是什么?最好的解决方案是将数字包装在自己的中。 如果不可能(您不创建HTML代码),您可以迭代的所有子节点。其中一个将是您想要定位的文本节点。最好的解决方案是将数字包装在它自己的中。 如果不可能(您不创建HTML代码)
<div>
756
<span></span>
</div>
756
使用JavaScript,我想从
div
标记中检索数字756,并将其递增1。从div标记中过滤出
以便只获取数字的最佳方法是什么?最好的解决方案是将数字包装在自己的
中。
如果不可能(您不创建HTML代码),您可以迭代
的所有子节点。其中一个将是您想要定位的文本节点。最好的解决方案是将数字包装在它自己的
中。
如果不可能(您不创建HTML代码),您可以迭代
的所有子节点。其中一个将是您要定位的文本节点。您可以使用.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);
.您可以使用
.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);
.
756
var textNode=document.getElementById(“mydiv”).childNodes[0];
var number=parseInt(textNode.nodeValue);
textNode.nodeValue=number+1;
756
var textNode=document.getElementById(“mydiv”).childNodes[0];
var number=parseInt(textNode.nodeValue);
textNode.nodeValue=number+1;
756
d=document.getElementById(“编号”)
n=parseInt(d.innerHTML)+1;
警报(n);
756
d=document.getElementById(“编号”)
n=parseInt(d.innerHTML)+1;
警报(n);
试试这个:
var div = document.getElementsByTagName("div")[0],
content = div.textContent || div.innerText;
除IE8之外的所有浏览器都支持textContent
,除FF4之外的所有浏览器都支持innerText
。因此,使用这两种方法,您应该会得到一个稳定的结果
这两个属性都返回带有剥离HTML标记的文本内容
示例:(在chrome/ff/ie7中测试)
现在,如果要增加它,只需执行以下操作:
content++;
它应该投射一个数字:试试这个:
var div = document.getElementsByTagName("div")[0],
content = div.textContent || div.innerText;
除IE8之外的所有浏览器都支持textContent
,除FF4之外的所有浏览器都支持innerText
。因此,使用这两种方法,您应该会得到一个稳定的结果
这两个属性都返回带有剥离HTML标记的文本内容
示例:(在chrome/ff/ie7中测试)
现在,如果要增加它,只需执行以下操作:
content++;
它应该投射一个数字:假设以下html代码:
<div id="someDiv">
756
<span></span>
</div>
假设此html代码:
<div id="someDiv">
756
<span></span>
</div>
我使用拆分文本来获取数字。
还使用jQuery获取文本,您可以使用这里使用的其他方法
var divText = $('div').text();
var contentArray = divText.split('\n');
var yay = parseInt(contentArray[1].trim(), 10);
alert(yay);
alert(yay++);
请参阅fiddle。我在文本上使用了拆分来获取数字。
还使用jQuery获取文本,您可以使用这里使用的其他方法
var divText = $('div').text();
var contentArray = divText.split('\n');
var yay = parseInt(contentArray[1].trim(), 10);
alert(yay);
alert(yay++);
请参见fiddle。最好的方法是将数字包装在元素中,但您可以通过以下方法解决:
最好的方法是将数字包装在元素中,但您可以通过以下方法解决:
另一种方法是避免浏览器中innerText和textContent的不兼容。在使用正则表达式提取数字之后,我使用innerHTML,并且建议在使用parseInt时始终定义基数(这将简单地避免我让您发现的一些奇怪的惊喜),最后增加值
var theNum = parseInt(document.getElementById('someDiv').innerHTML.match(/\d+/), 10);
alert(theNum+=1)
另一种方法是避免浏览器中innerText和textContent的不兼容。在使用正则表达式提取数字之后,我使用innerHTML,并且建议在使用parseInt时始终定义基数(这将简单地避免我让您发现的一些奇怪的惊喜),最后增加值
var theNum = parseInt(document.getElementById('someDiv').innerHTML.match(/\d+/), 10);
alert(theNum+=1)
最简单的方法是将数字放在另一个span中,并使用javascriptuse
访问新span而不是div。innerText
然后parseInt(不要忘记基数)显示的结构是否总是相同的,并且数字总是位于该div的第一位?或者您需要更灵活的解决方案?抱歉,有点晚了,但发布了一个替代方案,以避免浏览器不兼容。var theNum=parseInt(document.getElementById('someDiv').innerHTML.match(/\d+/),10);alert(theNum+=1)最简单的方法是将数字放在另一个span中,并使用javascriptuse访问新span而不是div。innerText
然后parseInt(不要忘记基数)显示的结构是否始终相同,并且数字始终位于该div的第一位?或者您需要更灵活的解决方案?抱歉,有点晚了,但发布了一个替代方案,以避免浏览器不兼容。var theNum=parseInt(document.getElementById('someDiv').innerHTML.match(/\d+/),10);警报(theNum+=1)收回。很抱歉Number(…)返回NaN,但parseInt(…)返回756retracting。很抱歉Number(…)返回NaN,但parseInt(…)确实返回756请阅读此处,Firefox确实存在“.innerText”的问题。刚刚更新了用于Firefox的.textContent的代码。请阅读此处,Firefox确实存在“.innerText”的问题。刚刚更新了用于Firefox的.textContent的代码。假定源代码中有换行符。按/\s?@JanDvorak拆分你必须使用某种约定的格式,我假设他的示例就是这种格式。你提供的regexp确实更好。10x.假设源代码中有一个换行符。按/\s?@JanDvorak拆分你必须使用某种约定的格式,我假设他的示例就是这种格式。你提供的regexp确实更好。10倍。或者只需div.text()+1
。另外,jQuery没有被标记,您的代码将删除容器中的任何HTML。标题只是用“javascript”表示,如果标题用“jQuery”表示,答案将是相关的。抱歉,这就是我投票认为答案没有用或只是div.text()+1
。此外,jQuery没有被标记,您的代码将删除容器中的任何HTML。标题只是用“javascript”表示,如果标题用“jQue”表示,答案将是相关的