帮我分析下javascript代码里的全部代码
尤其是for(i=1;i<ts.length+1;i++)  这段循环为什么i要等于1.还有length属性后面为什么要加1.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="Copyright" content="爱JavaScript中文网 http://www.ijavascript.cn/" />
<meta name="description" content="DIV+CSS选项卡" />
<meta content="DIV+CSS选项卡" name="keywords" />
<title>DIV+CSS选项卡演示-爱JavaScript中文网</title><style type="text/css" media="all">
/*TAB布局*/
#tab * {font-size:12px;}
#tab h3 a {display:inline-block;}
#tab h3 a {display:block;}
#tab {position:relative;}
#tab h3,#tab ul,#tab div,#tab li {margin:0;padding:0;list-style-type:none;}
#tab ul li {position:absolute;left:0;top:0;float:left;display:block;width:100px;height:30px;font-size:0;}
#tab ul li#tab2 {left:100px;}
#tab ul li#tab3 {left:200px;}
#tab ul li#tab4 {left:300px;}
#tab ul li div {position:absolute;clear:both;}
#tab ul li div#oDIV2 {left:-100px;}
#tab ul li div#oDIV3 {left:-200px;}
#tab ul li div#oDIV4 {left:-300px;}/*TAB-标题修饰*/
#tab,#tab ul li div,#tab ul li div li {width:450px;}/* 设置总宽度[width] */
#tab {height:200px;background:#ccc;overflow:hidden;}/* 设置总高度[height]、标题背景颜色[background] */
#tab ul li h3 a {height:18px;padding:5px 0 2px;margin:5px 0px 0px 5px;text-align:center;border:solid #ccc 1px;border-bottom:none;color:#333;}/* 标题默认状态 */
#tab ul li h3 a:hover {background-color:#ddd;border-color:#fff;}/* 鼠标经过状态 */
#tab ul li.up h3 a {background:#999;border-color:#fff #999 #999 #fff;color:#fff;}/* 当前窗口状态 */
#tab ul li div {border:solid #999;border-width:1px 0;background:#f7f7f7;height:167px;}/* 设置内容高度[height]、背景颜色[background]、上下分割线[border] */
/*TAB1效果[ol/li]*/
#tab ul li #oDIV1 ol {margin:8px;padding:0;}
#tab ul li #oDIV1 ol li {position:static;float:none;font-size:0;height:auto;}
#tab ul li #oDIV1 ol li a {font-size:12px;display:block;padding:5px 0 1px;}
/*TAB2效果[img]*/
#tab ul li #oDIV2 img {margin:8px;border:none;}
/*TAB3效果[iframe]*/
#tab ul li #oDIV3 iframe {border:none;width:440px;height:157px;margin:5px;}
</style><script type="text/javascript">
<!--
function toggleTo(img)
{
var ts=document.getElementById("tab").getElementsByTagName("div");
for(i=1;i<ts.length+1;i++){
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;
}
}
}
-->
</script></head><body>
<div id="tab">
  <ul>
<li id="tab1" class="up">
<h3><a href="####" onclick="toggleTo(1)">支付</a></h3>
  <!-- onclick鼠标释放,onmousemove鼠标经过。 -->
  <div id="oDIV1">
  <ol>
  <li><a href="http://www.ijavascript.cn"><span>使该元素在FireFox下获得高度从而显示背景</span></a></li>
  <li><a href="http://www.ijavascript.cn"><span>为了保证浏览器的兼容性</span></a></li>
  <li><a href="http://www.ijavascript.cn"><span>文本对齐方式改回默认left</span></a></li>
  <li><a href="http://www.ijavascript.cn"><span>左右自适应[FireFox居中方式]</span></a></li>
 <li><a href="http://www.ijavascript.cn"><span>内容对齐方式为居中[IE居中方式]</span></a></li>
 <li><a href="http://www.ijavascript.cn"><span>内容对齐方式为居中[IE居中方式]</span></a></li>
  </ol>
  </div>
</li> <li id="tab2"> <h3><a href="####" onclick="javascript:toggleTo(2)">软件下载</a></h3>  <div id="oDIV2" style="display:none;">
<a href="http://www.ijavascript.cn"><img src="http://www.ijavascript.cn/templates/logo/logo.gif" alt="播放软件下载" /></a>
<a href="http://www.ijavascript.cn"><img src="http://www.ijavascript.cn/templates/logo/logo.gif" alt="播放软件下载" /></a>
</div>
</li> <li id="tab3"> <h3><a href="####" onclick="javascript:toggleTo(3)">问题答疑</a></h3>  <div id="oDIV3" style="display:none;"><iframe frameborder="0" scrolling="auto" src="http://www.ijavascript.cn"></iframe></div>
</li> <li id="tab4"> <h3><a href="####" onclick="javascript:toggleTo(4)">客服</a></h3>  <div id="oDIV4" style="display:none;"><a href="http://www.ijavascript.cn">JavaScript教程网</a></div>
  </li>
  </ul>
</div>
</body>
</html>

解决方案 »

  1.   

    var ts=document.getElementById("tab").getElementsByTagName("div");
    //id="tab"下面所有div的集合,ts.length=4;
    //因为 ts.length=4,所以要遍历 oDIV1,oDIV2,oDIV3,oDIV4
    //就要用 i<=ts.length Or i<ts.length+1 即i<=4或者i<5
    for(i=1;i<ts.length+1;i++){
    if(img==i)
    {//如果传入的参数等于i,就像是当前的"oDIV"+i即 :oDIV1,oDIV2,oDIV3,oDIV4
    //即点击那个显示那个,把不是点击的都隐藏
    document.getElementById("oDIV"+i).style.display = "";
    document.getElementById("oDIV"+i).parentNode.className+=" up";
    }
    else{//如果不等,则是其他div全部隐藏
    document.getElementById("oDIV"+i).style.display = "none";
    document.getElementById("oDIV"+i).parentNode.className="tab"+i;
    }
    }
      

  2.   

    因为选项卡里面的各项编号是从1开始的tab1、oDiv1
    你如果加一层编号0的,亦可以从0开始循环for(i=0;i<ts.length;i++)
      

  3.   

    因为是1,2,3,4
    for(i=1,i<ts.length+1,i++)
    就等同于
    for(i=1,i<5,i++)
    就取到i=1,2,3,4
      

  4.   


    很简单,你看div的id就知道了<div id="oDIV1">、<div id="oDIV2">....
    var ts=document.getElementById("tab").getElementsByTagName("div");
    for(i=1;i<ts.length+1;i++){
    if(img==i)
    {
    document.getElementById("oDIV"+i).style.display = "";//这里是获得div元素,div是从1开始的;循环也就从1开始
      

  5.   

    document.getElementById("oDIV"+i).style.display = "";
    document.getElementById("oDIV"+i).parentNode.className+=" up";
    document.getElementById("oDIV"+i).parentNode.className="tab"+i;
    以上三句是什么含义啊?
    还有第一句的display的值是空的.是什么意思啊?为空就是等于none一样吗?
      

  6.   

    document.getElementById("oDIV"+i).style.display = ""; 
    == document.getElementById("oDIV"+i).style.display = "block";
      

  7.   


    document.getElementById("oDIV"+i).parentNode.className+=" up";//添加up的class样式
    document.getElementById("oDIV"+i).parentNode.className="tab"+i; //添加tab1、tab2这样的样式
      

  8.   

    那5楼的是什么意思啊?
    还有为什么要加parentNode
      

  9.   

    既然display的值是block.
    为什么要让它为空啊.
      

  10.   

    什么书啊?
    我在看<javascript DOM 编程艺术>
    看了好几变了,还是不能自己写代码