使用javascript在div中的链接中循环
我有一个hta应用程序,它使用xslt解析一些xml,并用结果填充hta页面中的一个div。结果包含一个表,该表包含xml的摘要,其中包含有关xml元素计数的超链接—下面的示例 页面上有一个按钮,位于“content”div之外,允许用户将页面保存为静态html文件,而无需超链接。我有下面的javascript,但是当单击“保存”按钮时,超链接只从第一个项目中删除,而不是从第二个项目中删除…(在正确的版本中会有更多的实际超链接)。我做错了什么-我认为这与循环有关…必须用javascript完成,没有jquery等-关于为什么使用javascript在div中的链接中循环,javascript,loops,Javascript,Loops,我有一个hta应用程序,它使用xslt解析一些xml,并用结果填充hta页面中的一个div。结果包含一个表,该表包含xml的摘要,其中包含有关xml元素计数的超链接—下面的示例 页面上有一个按钮,位于“content”div之外,允许用户将页面保存为静态html文件,而无需超链接。我有下面的javascript,但是当单击“保存”按钮时,超链接只从第一个项目中删除,而不是从第二个项目中删除…(在正确的版本中会有更多的实际超链接)。我做错了什么-我认为这与循环有关…必须用javascript完成,
function SaveContent() {
var myContent = document.getElementById("content")
var myLinks = myContent.getElementsByTagName('a')
for (var myItem = 0; myItem < myLinks.length; myItem++) {
var myChild = myLinks[myItem]
var myParent = myChild.parentNode
var myValue = myChild.innerText
myChild.parentNode.removeChild(myChild)
myParent.innerText = myValue
/*code to save to file will go here */
}
}
<div id="content">
<table>
<tr>
<td>Status</td>
<td>Count</td>
</tr>
<tr>
<td>New</td>
<td>
<a href="#">34</a>
</td>
</tr>
<tr>
<td>Closed</td>
<td>
<a href="#">78</a>
</td>
</tr>
</table>
</div>
函数SaveContent(){
var myContent=document.getElementById(“内容”)
var myLinks=myContent.getElementsByTagName('a')
对于(var myItem=0;myItem
非常感谢
getElementsByTagName
是一个实时列表。当您对项目调用removeChild
时,它将从列表中删除。。。但循环的索引仍在继续
典型的解决方案是:
for( var myItem = myLinks.length-1; myItem >= 0; myItem--)
从头到尾工作。如果您的代码可能会添加更多链接,这也很好,因为它们不会被迭代。尝试以下方法:
function SaveContent() {
var myContent = document.getElementById("content")
var myLinks = myContent.getElementsByTagName('a')
while (myLinks.length) {
var child = myLinks[0];
var parent = child.parentNode;
var value = child.innerText;
parent.removeChild(child);
parent.innerText = value;
}
}
啊,当然!我应该知道,从删除Excel中的行!非常感谢,现在可以完美地工作了:-DWell,有趣的是
querySelectorAll
是一个静态列表,因此如果您循环使用document.querySelectorAll(“#content a”)
,那么您的前向循环就可以了;)