小弟学习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对象为空或不是对象",小弟百思不得其解,请求给位帮助下,谢谢
<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对象为空或不是对象",小弟百思不得其解,请求给位帮助下,谢谢
n被赋值为"list"整个字符串
n.childNodes返回的必然为undefined啊。。肯定会报错的。楼主确定代码是对的?
<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>