为什么浏览器被我的Javascript函数挂起?
我想循环浏览网页中的所有元素,但是它挂起了。 我发现它重复循环最后一个和元素。 我试图在Firefox和Chrome的调试器中找到问题,但是,我找不到根本原因 这是我的密码:为什么浏览器被我的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> &
<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子句的部分注释,依此类推。它不应该挂起,应该断开。缺少大括号时出现语法错误。我现在更新了代码。