html:
<div id="left">
<ul id="lu">
<li id="unch"><img src="image/biao.gif"/> 软件产品</li>
<li class="personnel" onclick="go_to(1)">portal产品</li>
<li class="personnel1" onclick="go_to(2)">BI产品</li>
<li class="personnel" onclick="go_to(3)" >增值软件产品</li>
</ul>
</div>js:
<script>
//<!--
var l=document.getElementById("lu").childNodes;
var d=document.getElementById("right").childNodes;
function go_to(ao){
for(var i=0;i<d.length;i++){
if(ao==i+1){
l[ao].className="personnel1";
d[i].className="";
d[i].className="bock";
}
else{
l[i+1].className="personnel";
d[i].className="";
}
} }
//-->
</script>

解决方案 »

  1.   

    childNodes是包含TextNode的。lz要做个判断,取nodeType。
      

  2.   

    因为在firefox下,空白也算是节点
    所以实际上  l[1] 是个空白节点,它是没有className属性的,所以报错
      

  3.   

    如果是如3#4#所示问题的话
    我建议判断下nodeType
    或者干脆叫找指定的 标签
      

  4.   

    var d=document.getElementById("right").childNodes;
    其中"right"是那个元索的ID,我在FF里测试了,如果把right换成id为left测试没有报错.
      

  5.   

    加个try catch看看是什么错:
    <script>
    //<!--
    var l=document.getElementById("lu").childNodes;
    var d=document.getElementById("right").childNodes;
    function go_to(ao){try{
    for(var i=0;i<d.length;i++){
    if(ao==i+1){
    l[ao].className="personnel1";
    d[i].className="";
    d[i].className="bock";
    }
    else{
    l[i+1].className="personnel";
    d[i].className="";
    }
    }
    }
    catch(e){
    var msg="";  
     for(i in e){
     msg+=i+":"+e[i]+"\n";  
    }
    alert(msg);//出现错误,看看错误信息是什么,然后再发出来大家帮你解决
    }
    }
    //-->
    </script>
      

  6.   

    <script>
    //<!--
    var l=document.getElementById("lu").childNodes;
    var d=document.getElementById("right").childNodes;
    function go_to(ao){try{
    for(var i=0;i<d.length;i++){
    if(ao==i+1){
    l[ao].className="personnel1";
    d[i].className="";
    d[i].className="bock";
    }
    else{
    l[i+1].className="personnel";
    d[i].className="";
    }
    }
    }
    catch(e){
    var msg="";  
     for(i in e){
     msg+=i+":"+e[i]+"\n";  
    }
    alert(msg);//出现错误,看看错误信息是什么,然后再发出来大家帮你解决
    }
    }
    //-->
    </script>
      

  7.   

    不好意思。。有事情耽搁了。。嗯,谢谢了。。我换成标签可以运行了。。因为刚自学javascript所以有很多不会。。
      

  8.   


    正确第一次遍历
    火狐中 空格和 回车都是一个新的节点
    在IE中 是 < > 为一个节点
    第二次遍历就不会出现了建议参考http://wenku.baidu.com/view/046be91cfad6195f312ba69b.html