为什么浏览器被我的Javascript函数挂起?

为什么浏览器被我的Javascript函数挂起?,javascript,dom,Javascript,Dom,我想循环浏览网页中的所有元素,但是它挂起了。 我发现它重复循环最后一个和元素。 我试图在Firefox和Chrome的调试器中找到问题,但是,我找不到根本原因 这是我的密码: <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> </head> &

我想循环浏览网页中的所有元素,但是它挂起了。 我发现它重复循环最后一个和元素。 我试图在Firefox和Chrome的调试器中找到问题,但是,我找不到根本原因

这是我的密码:

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    </head>
    <body>
        kkjlkjjklk
        <div id=qq>
            sdfsdfdfdssdfsdf
        <p id="demo">Click the button get info about 
            the body element's child nodes</p>
        </div>
        <button onclick="myFunction()">Try it</button>
        <p id=jj>
            <strong>Note:</strong> Whitespace inside elements is considered as text, and text 
            is considered as nodes.
        </p>

        <script>
        function showElementInfo(e)
        {
            var result="";
          var c=e.childNodes;
          for (i=0; i<c.length; i++)
          {
            data=jQuery.trim(c[i].textContent);
            switch (c[i].nodeName)
            {
                case "BUTTON":break;
              case "SCRIPT":break;
                default:
                                if (c[i].childNodes.length==3)
                                    showElementInfo(c[i]);
                                else
                                    console.log("parent="+c[i].parentNode.nodeName+","+c[i].nodeName+":"+data+","+c[i].childNodes.length);
                                break;
            }
          }
        }
        function myFunction()
        {
         var txt="";
         showElementInfo(document.body);
         //showElementInfo(document.getElementById("jj"));
        }
        </script>
    </body>
</html>
多谢各位

它挂着。我发现它反复循环最后一个和元素,但是,我找不到根本原因

你的i变量是。当您执行递归时,它将覆盖外部调用中的计数器变量,并且每当子节点数小于当前i时,您将陷入无限循环中


吸取的经验教训:始终使用,并尽早警告错误。

您可以注释掉除for循环之外的所有代码。如果浏览器仍处于活动状态,请取消对数据的注释=。。。部分,然后取消对switch子句的部分注释,依此类推。它不应该挂起,应该断开。缺少大括号时出现语法错误。我现在更新了代码。