向javascript资深专家求解一个深刻的问题!!

来源:百度知道 编辑:UC知道 时间:2024/07/05 02:28:25
<script type="text/javascript">
function showme(showobj){
//alert("click");
var cc=document.getElementsByName("show");
alert("d");
for(var i=0;i<showobj.name.length;i++){
alert(showobj.name.length);

}
}
</script>
请问什么以上脚本写成以下脚本那个也能运行,就是在("show")后面加个.name
而如果我再在showobj.name.length改成showobj.name.name.length却不能运行
再次,我将var cc=document.getElementsByName("show")改成了
var cc=document.getElementsByName("show").name
然后将i<showobj.name.length;换成了i<cc.length;
也不能运行。不知何解?看来只有javascript资深专家求教了。

<script type="text/javascript">
function showme(showobj){
//alert("click");
var cc=document.getElementsByName("show").name;
alert("d");
for(var i=0;i<showobj.name.length;i++){
alert(showobj.name.length);

}
}
</sc

1、var cc=document.getElementsByName("show"); //cc是一个长度为6的数组 即 cc.length 等于6
你改成 var cc=document.getElementsByName("show").name; 这时的cc就变成undefine了 cc.length 就会报错。
2、你改成 var cc=document.getElementsByName("show").name; 这个时候cc是undefine 为什么下面的代码能运行 是因为你没再涉及到cc的东西 你只是得到了一个空对象 并没有操作他 所以不会报错。 而你再在showobj.name.length改成showobj.name.name.length 当然不能运行。 你showme(this)传的是个input对象 所以 showobj.name 就是 <input type="checkbox" name="show">这个对象的name属性 即 是一个值为 show 的字符串变量。 这个变量是没有name属性的 所以你showobj.name.name就已经报错了。

貌似不怎么深刻啊。

楼上正解。

o(╯□╰)o

资深专家~~~~⊙﹏⊙b汗