关于javascript递归的诡异问题!? 本帖最后由 isun2007 于 2009-09-03 20:35:00 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是呀!if (hids.length > 0)这个不就是条件吗!!!而且这个死循环不是正常的死循环!你运行一下,就知道什么意思了。 <html xmlns="http://www.w3.org/1999/xhtml" ><head> <title></title> <script type ="text/javascript" language ="javascript"> function traversing(parentCode) { var hids = document.getElementsByName("hid_" + parentCode); alert(hids.length); if(hids.length==0) break; if (hids.length > 0) { alert("即将进入循环!"); for (i = 0; i < hids.length; i++) { alert("此时i=" + i); var oTr = hids[i].parentNode.parentNode; alert(oTr.id); var ids = oTr.id.split("_"); traversing(ids[1]); alert("出递归" + ids[1]); } } } </script></head><body> <table border ="1" cellpadding ="4" cellspacing ="0" width ="90%" align ="center" style="border-collapse:collapse;" ID="Table1"> <tr id ="tr_1"> <td style ="cursor:pointer" onclick ="javascript:traversing('1')"> --1--ABC::tr_1 </td> </tr> <tr id ="tr_2"> <td> <input type ="hidden" id ="hid_11" name ="hid_1" /> --2--DEF1::tr_2 </td> </tr> <tr id ="tr_3"> <td> <input type ="hidden" id ="hid_2" name ="hid_2" /> --3--GHI1::tr_3 </td> </tr> <tr id ="tr_4"> <td> <input type ="hidden" id ="hid_12" name ="hid_1" /> --2--DEF2::tr_4 </td> </tr> <tr id ="tr_5"> <td> <input type ="hidden" id ="hid_4" name ="hid_4" /> --3--GHI2::tr_5 </td> </tr> <tr id ="tr_6"> <td> <input type ="hidden" id ="hid_13" name ="hid_1" /> --2--DEF3::tr_6 </td> </tr> <tr id ="tr_7"> <td> <input type ="hidden" id ="hid_6" name ="hid_6" /> --3--GHI3::tr_7 </td> </tr> </table></body></html> if(hids.length==0) break;这里break什么?改成你的代码,我这一运行脚本报错!另外,我已经找到原因了!据我的分析就是因为:for (i = 0; i < hids.length; i++)这里的i的作用域不仅仅是for语句块!递归调用的时候i的值混乱赋值所致!!!问题已解决,不过还要谢谢你的热心回复! 额。是的,for (var i = 0; i < hids.length; i++) 刚才在chrome下加那条语句运行正常.没发现原来IE下报错 a标签即增加了href下载包,也增加onclick这两个事件如何同时响应 使用jQuery 实现3文本框修改数字后无刷新运算显示新结果 有没有什么好的技术可以实现这样的效果(急!急!急!) 怎样将一下Execl中的模块代码搬到javascript中使用 江湖救急-快来看看这段代码错在哪里了啊 dottext开源文件一段JS脚本(在线等). 谁用过FCKeditor? 页面对不整齐,表格和层混排,高分辨率下变形!!!在线等!!! JS小问题,请大家帮助 一个关于iframe的问题 如何在vs2008 的teamSystem 版 安装jquery的智能提示? JSON入门与提高 11
不是呀!
if (hids.length > 0)
这个不就是条件吗!!!
而且这个死循环不是正常的死循环!你运行一下,就知道什么意思了。
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<script type ="text/javascript" language ="javascript">
function traversing(parentCode) {
var hids = document.getElementsByName("hid_" + parentCode);
alert(hids.length);
if(hids.length==0) break;
if (hids.length > 0) {
alert("即将进入循环!");
for (i = 0; i < hids.length; i++) {
alert("此时i=" + i);
var oTr = hids[i].parentNode.parentNode;
alert(oTr.id);
var ids = oTr.id.split("_");
traversing(ids[1]);
alert("出递归" + ids[1]);
}
}
}
</script>
</head>
<body>
<table border ="1" cellpadding ="4" cellspacing ="0" width ="90%" align ="center" style="border-collapse:collapse;" ID="Table1">
<tr id ="tr_1">
<td style ="cursor:pointer" onclick ="javascript:traversing('1')">
--1--ABC::tr_1
</td>
</tr>
<tr id ="tr_2">
<td>
<input type ="hidden" id ="hid_11" name ="hid_1" />
--2--DEF1::tr_2
</td>
</tr>
<tr id ="tr_3">
<td>
<input type ="hidden" id ="hid_2" name ="hid_2" />
--3--GHI1::tr_3
</td>
</tr>
<tr id ="tr_4">
<td>
<input type ="hidden" id ="hid_12" name ="hid_1" />
--2--DEF2::tr_4
</td>
</tr>
<tr id ="tr_5">
<td>
<input type ="hidden" id ="hid_4" name ="hid_4" />
--3--GHI2::tr_5
</td>
</tr>
<tr id ="tr_6">
<td>
<input type ="hidden" id ="hid_13" name ="hid_1" />
--2--DEF3::tr_6
</td>
</tr>
<tr id ="tr_7">
<td>
<input type ="hidden" id ="hid_6" name ="hid_6" />
--3--GHI3::tr_7
</td>
</tr>
</table>
</body>
</html>
if(hids.length==0) break;
这里break什么?改成你的代码,我这一运行脚本报错!另外,我已经找到原因了!据我的分析就是因为:for (i = 0; i < hids.length; i++)
这里的i的作用域不仅仅是for语句块!递归调用的时候i的值混乱赋值所致!!!
问题已解决,不过还要谢谢你的热心回复!
刚才在chrome下加那条语句运行正常.没发现原来IE下报错