Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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 使用jquery逐个遍历DOM节点_Javascript_Jquery_Html_Dom - Fatal编程技术网

Javascript 使用jquery逐个遍历DOM节点

Javascript 使用jquery逐个遍历DOM节点,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我想通过维护序列来遍历网页上的节点 e、 g.以下是基本DOM: <BODY> <DIV id ='1'> Test 1 </DIV> <DIV id='2'> Details about <SPAN id='3'> Execution </SPAN> </DIV> </BODY> 是否有人知道这一点,如何使用jquery(最好)或javascript实现这一点, 请分享他

我想通过维护序列来遍历网页上的节点

e、 g.以下是基本DOM:

<BODY>
     <DIV id ='1'> Test 1 </DIV>
     <DIV id='2'> Details about <SPAN id='3'> Execution </SPAN> </DIV>   
</BODY>
是否有人知道这一点,如何使用jquery(最好)或javascript实现这一点, 请分享他们的参考资料

谢谢


-普拉文

你可以用一个身体循环,就像这样:

$("body").find("*").andSelf().each(function() {
    alert(this.nodeName); //alerts body, div, div, span
});​
注意
和self
已被弃用,现在是
addBack()
的别名,应与jQuery 1.8及更高版本一起使用


,则
正文部分是这样,您就不会得到
及其内容等。

dom方法中总是有标准的Crockford walk

示例:

特定的
walk\u DOM
代码示例复制自此处:

EDIT:文本节点具有
nodeType=3
,因此如果需要,也可以将其添加到
if()
语句中

walk_the_DOM(document.body, function(node) {
    if(node.nodeType == 1 || node.nodeType == 3)
        alert(node.id);  // ID will be undefined if it is a text node
})​;​
简单

function walk(node, fn) {
    if (node) do {
        fn(node);
        if (node.nodeType === 1) walk(node.firstChild, fn);
    } while (node = node.nextSibling);
}
用法:

walk(document.body, function(){
    // do something with `this`
    // e.g.
    alert(this.id);
});
为了避免非元素节点,这将起作用:

function walk(node, fn) {
    if (node) do {
        if (node.nodeType === 1) {
            fn(node);
            walk(node.firstChild, fn);
        }
    } while (node = node.nextSibling);
}

@pravin你在找
$('*')
?@Avinash:对不起,你能探索一下这一点吗……你的意思是说页面上的所有节点……在
$('*')
中,
“*”
选择器用于选择页面上的每个节点。我想它不会选择文本节点……就像上面的例子,即测试1的innerHTML。在这里,它将跳转每个节点,如、、,,,。如果我想,我该如何实现:,测试1,关于执行的详细信息,这可能吗?@pravin-您可以在迭代这些节点时获取这些节点的内容,但您的示例没有文本节点,您应该更新问题,以了解您的目标。这有两个反对票。我也很好奇,因为答案是正确的。落选的选民应该表现得体,并解释原因。确切地说……这个答案似乎很好……请加上对落选者的评论,所以我也知道还有其他理由这样做……这不包括
@Roatin-你为什么不这么说?更新了。好吧,+1如果不是因为你几乎总是给出建设性的评论来代替否决票这一事实。在DOM树中遍历父到子的伟大递归代码
function walk(node, fn) {
    if (node) do {
        fn(node);
        if (node.nodeType === 1) walk(node.firstChild, fn);
    } while (node = node.nextSibling);
}
walk(document.body, function(){
    // do something with `this`
    // e.g.
    alert(this.id);
});
function walk(node, fn) {
    if (node) do {
        if (node.nodeType === 1) {
            fn(node);
            walk(node.firstChild, fn);
        }
    } while (node = node.nextSibling);
}