<html>
<head>
<!--省略了topic和htopic的定义-->
</head>
<body>
<div id="main">
    <div class="topic">
    </div>
    <div class="htopic">
        <div class="topic">
        </div>
        <div class="htopic">
        </div>
    </div>
</div>
</body>
</html>
    function mgoto(index)
    {
        var usrcon = document.getElementById("main").childNodes[1];
        
        for (var i = 0; i < usrcon.childNodes.length; ++i)
            if (i == index)
                usrcon.childNodes[i].className = topic;
            else
                usrcon.childNodes[i].className = htopic;
    }我刚开始接触js,搞不懂为什么这段js代码会报错?求各位解释一下

解决方案 »

  1.   

    报错??你是说不兼容吧??如果topic和htopic你定义好了的话,那么:
    function mgoto(index)
    {
        //查找id=main下的第2个div下的所有div
        var usrcon = document.getElementById("main").getElementsByTagName("div")[1].getElementsByTagName("div");
        for (var i = 0; i < usrcon.length; ++i)
        {
            usrcon[i].className=(i== index)?topic:htopic;
        }
    }
      

  2.   

    你要是把:
    <div id="main">
        <div class="topic">
        </div>
        <div class="htopic">
            <div class="topic">
            </div>
            <div class="htopic">
            </div>
        </div>
    </div>改成:<div>
        <div class="topic">
        </div>
        <div id="main" class="htopic">
            <div class="topic">
            </div>
            <div class="htopic">
            </div>
        </div>
    </div>操作会更简便
      

  3.   

    我那段js代码的语法有问题吗?我的ie浏览器说网页有错误
      

  4.   

        .topic{
            float:right;
            width:600px;
            height:400px;
            background:white;
        }
        
        .htopic{
            display:none;
            float:right;
            width:600px;
            height:400px;
            background:#FFFAF4;
        }
        
    topic和htopic没有问题的,都有用过,就是onclick="mgoto(0到1)"说网页有错误
      

  5.   

    你如果下面的 topic 和 htopic 定义好了的话,不会报错吧。如果没定义的话,那肯定报错:''未定义
    usrcon.childNodes[i].className = topic;
     else
    usrcon.childNodes[i].className = htopic;
      

  6.   

    我晕死,你那哪叫定义呀??你那只是css样式定义而已,改成下面的才对
    usrcon.childNodes[i].className = 'topic';
     else
    usrcon.childNodes[i].className = 'htopic';
      

  7.   

    为了多浏览器兼容,你还是用这个吧function mgoto(index)
    {
        //查找id=main下的第2个div下的所有div
        var usrcon = document.getElementById("main").getElementsByTagName("div")[1].getElementsByTagName("div");
        for (var i = 0; i < usrcon.length; ++i)
        {
            usrcon[i].className=(i== index)?'topic':'htopic';
        }
    }
      

  8.   

    问题解决了,谢谢你
    childNodes不是标准的吗?
      

  9.   

    不是说标准啥的,反正就是浏览器兼容性的问题。其他的对这个操作有差异性的还是用getElementsByTagName代替节点操作吧