看注释
    function toggleTo(img) {
        var ts = document.getElementById("tab").getElementsByTagName("div");//这里获取到两个div
        for (i = 1; i < ts.length + 1; i++) {
//由于只有一个名字叫oDIV1的元素,所以当i为2时就找不到id为oDIV2的元素了,然后就报错了
            if (img == i) {
                document.getElementById("oDIV" + i).style.display = "";
                document.getElementById("oDIV" + i).parentNode.className += " up";
            }
            else {
                document.getElementById("oDIV" + i).style.display = "none";
                document.getElementById("oDIV" + i).parentNode.className = "tab" + i;
            }
        }
    }

解决方案 »

  1.   

    那要怎么改才不会报错呢,之前没有插入收缩的这个:
    function OnClickDiv(DivId)
    {
    if(document.all[DivId].style.display=='none')
    {document.all[DivId].style.display='';} 
    else
    {document.all[DivId].style.display='none';}
    return 0;
    }
    就不会报错呀。
      

  2.   

    1楼已经将问题给你说得很清楚了。你要做的是判断某个对象是否存在,存在才执行,否则跳过。要怎么做呢???另外:OnClickDiv函数中使用document.all来获取元素,在非IE标准浏览器中将失效,应改为:document.getElementById获取