function showtable(s)
{
for(var i=1;i<=4;i++)
{
var obj = document.getElementById("v" + i);
if(s == i)
obj.style.display = "none";
else
obj.style.display = "";
}
}

解决方案 »

  1.   

    <table id=v1 style=display:none>
    ....
    </table>
    <table id=v1 style=display:none>
    ....
    </table>
    <table id=v1 style=display:none>
    ....
    </table>
    <table id=v1 style=display:none>
    ....
    </table>function showtable(s)
    {
    var aa = document.getElementsByName("v1");
    for(var i=1;i<aa.length;i++)aa[i].style.display = "none";
    a[s].style.display="";
    }
      

  2.   

    function showtable(s)
    {
    var aa = document.getElementsByName("v1");
    for(var i=0;i<aa.length;i++)aa[i].style.display = "none";
    a[s-1].style.display="";
    }
      

  3.   

    两种思想:
    1,可以象上面朋友写的那样,每次将要显示的块的style.display="block",其余的用循环设置style.display="none".但这样有个明显的缺点是执行效率比较低。但也有个优点是比较可靠,可以确保一组中只有一个被显示。
    2,先将所要求的一组元素其中一个显示,其余的隐藏,并用一个变量(叫做当前变量)保存当前显示的元素的id.
    然后要显示其它同组元素时,只需要隐藏当前元素,显示目标元素,并改变当前变量的值。例子如下:
      

  4.   

    <html>
    <head>
    <style>
    .mygroupdiv{width:300px;height:300px;border:1px solid red;}
    </style>
    <script language=javascript>
    curdivid="div1";
    function showdiv(divid){
        if(divid !=curdivid){
          document.getElementById(curdivid).style.display="none";
          document.getElementById(divid).style.display="block";
          curdivid=divid;
        }
    }
    </script>
    </head>
    <body>
    <select onchange="showdiv(this.value)">
    <option value="div1">显示div1</option>
    <option value="div2">显示div2</option>
    <option value="div3">显示div3</option>
    <option value="div4">显示div4</option>
    </select>
    <div id=div1 class=mygroupdiv style="display:block">div1</div>
    <div id=div2 class=mygroupdiv style="display:none;">div2</div>
    <div id=div3 class=mygroupdiv style="display:none;">div3</div>
    <div id=div4 class=mygroupdiv style="display:none;">div4</div>
    </body>
    </html>
      

  5.   

    这样,每次改变显示元素时,只需要改变两个元素的属性就够了,时间复杂度是O(1).
    而第一种方法,需要用一个循环,时间复杂度是O(n).第二种方法虽然比较高效,但不是完全可靠。因为在这一组元素有多个的隐藏属性被意外改变或当前变量被意外改变时,再次触发函数时,并不能将该组元素整理成只显示一个的标准形。
      

  6.   

    上面的第二种方法是不错 但还不够高效你为什么一定要记录最后一次修改的元素id?而不直接记录最后一次修改的元素
    这样还省略了用getElementById的时间.