Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript在div中的链接中循环_Javascript_Loops - Fatal编程技术网

使用javascript在div中的链接中循环

使用javascript在div中的链接中循环,javascript,loops,Javascript,Loops,我有一个hta应用程序,它使用xslt解析一些xml,并用结果填充hta页面中的一个div。结果包含一个表,该表包含xml的摘要,其中包含有关xml元素计数的超链接—下面的示例 页面上有一个按钮,位于“content”div之外,允许用户将页面保存为静态html文件,而无需超链接。我有下面的javascript,但是当单击“保存”按钮时,超链接只从第一个项目中删除,而不是从第二个项目中删除…(在正确的版本中会有更多的实际超链接)。我做错了什么-我认为这与循环有关…必须用javascript完成,

我有一个hta应用程序,它使用xslt解析一些xml,并用结果填充hta页面中的一个div。结果包含一个表,该表包含xml的摘要,其中包含有关xml元素计数的超链接—下面的示例

页面上有一个按钮,位于“content”div之外,允许用户将页面保存为静态html文件,而无需超链接。我有下面的javascript,但是当单击“保存”按钮时,超链接只从第一个项目中删除,而不是从第二个项目中删除…(在正确的版本中会有更多的实际超链接)。我做错了什么-我认为这与循环有关…必须用javascript完成,没有jquery等-关于为什么

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”)
,那么您的前向循环就可以了;)