想用这段代码历遍所有的节点,但是……

hillhero789 2002-12-28 11:18:28
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<SCRIPT LANGUAGE="JScript">
function accessAllNodes(para) {
if(para.hasChildNodes)
{
for(i in para.hasChildNodes)
accessAllNodes(para.hasChildNodes[i]);
}
else alert(para.nodeValue);

}
</SCRIPT>
<a href="#" onclick="accessAllNodes(document)">gfdsgfdgfd</a>
</body>
</html>

运行结果是:

点击-->浏览器无响应!
...全文
88 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hillhero789 2002-12-29
  • 打赏
  • 举报
回复
有没有人帮帮我啊。
hillhero789 2002-12-29
  • 打赏
  • 举报
回复

谢谢大侠仗义相答!!!!!
结贴!
blues-star 2002-12-29
  • 打赏
  • 举报
回复
childNodes不是数组,是一个对象Xml Node对象。
blues-star 2002-12-29
  • 打赏
  • 举报
回复
看看下面代码

var tmp = new Array();
tmp["a"] = 1;
tmp["b"] = 2;

for (var i in tmp)
alert(tmp[i]);

只有tmp[i]才可以访问到数组中的内容,也就是说i是下标,i="a"...。

而C#中int i in tmp的i确是tmp中的某一个内容,也就是说i=1,2....。
blues-star 2002-12-29
  • 打赏
  • 举报
回复
......................

可能是我错了吧,C#里用in访问collection,而javascript里只能访问数组,访问不了collection,而childNodes应该是一个collection.

我也迷糊里,别人给答吧。

反正javascript的in用的不是很灵光,形同虚设。
hillhero789 2002-12-29
  • 打赏
  • 举报
回复
果然对了
但是我还有一点要问:
对于数组不是可以用in来访问吗?
到底什么才算collection
hillhero789 2002-12-29
  • 打赏
  • 举报
回复

我试试
hillhero789 2002-12-29
  • 打赏
  • 举报
回复
现在改成这样,已经不死了,但是显示的都是“undefined”
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<SCRIPT LANGUAGE="JScript">
function accessAllNodes(para) {
if(para.hasChildNodes)
{
for(i in para.childNodes)
accessAllNodes(para.childNodes[i]);
}
else alert(para.nodeName);
}
</SCRIPT>
<a href="#" onclick="accessAllNodes(document)">gfdsgfdgfd</a>
</body>
</html>
blues-star 2002-12-29
  • 打赏
  • 举报
回复
Secondly:

"childNodes" property is not a collection, so do not use "in".



<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" text="#000000" onload="accessAllNodes(document)">
<table>
<tr>
<td>a</td>
</tr>
</table>

</body>
</html>

<SCRIPT LANGUAGE="JScript">
function accessAllNodes(para)
{
if(para.hasChildNodes())
{
for(var i=0;i<para.childNodes.length;i++)
accessAllNodes(para.childNodes[i]);
}
else alert(para.nodeValue);

}
</SCRIPT>
hillhero789 2002-12-29
  • 打赏
  • 举报
回复
if(para.hasChildNodes())-->改成这样的话
会报错啊

能不能帮我修改一下呢?谢谢!
blues-star 2002-12-29
  • 打赏
  • 举报
回复
para.hasChildNodes()

"hasChildNodes" is a method of HTML Document Object Model, not property.
hillhero789 2002-12-28
  • 打赏
  • 举报
回复
哦上边的accessAllNodes(para.hasChildNodes[i]);
改为:accessAllNodes(para.childNodes[i]);

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧