小弟学习javascript的权威指南,有如下代码
<html>
<head>
<script>
function upcase(n)
{
if(typeof n==3)
{
n.data=n.data.toUpperCase();
}
else
{
kids=n.childNodes;
for(var i=0;i<kids.length;i++)
{
upcase(kids[i]);
}
}
}
</script>
</head>
<body>
<ul id='list'>
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
</ul>
<button onclick="upcase('list')">Upcase</button>
</body>
</html>
但是执行的时候却报错"kids.length对象为空或不是对象",小弟百思不得其解,请求给位帮助下,谢谢

解决方案 »

  1.   

    upcase('list')这样传参进去。。
    n被赋值为"list"整个字符串
    n.childNodes返回的必然为undefined啊。。肯定会报错的。楼主确定代码是对的?
      

  2.   

    原来如此,那我如何修改,我改成如下代码,还是不行啊?!<html>
        <head>
        <script>
            function upcase(n)
            {
                if(typeof n=='string')
    {
    n=document.getElementById(n);
    }
    if(typeof n==3)
                {
                    n.data=n.data.toUpperCase();
                }
                else
                {
                    kids=n.childNodes;
                    for(var i=0;i<kids.length;i++)
                    {
                        upcase(kids[i]);
                    }
                }
            }
        </script>
        </head>
        <body>
            <ul id='list'>
                <li>one</li>
                <li>two</li>
                <li>three</li>
                <li>four</li>
            </ul>
            <button onclick="upcase('list')">Upcase</button>
        </body>
    </html>
      

  3.   

    啊,我就是想把里面的Text都编程大写,我已经搞定了,感谢您的回复!