我打破了一个工作的javascript脚本试图扩展它

时间:2015-12-07 05:32:37

标签: javascript

在我添加第3到第8行之前,下面的脚本工作正常(切换显示开/关),以避免一次显示多个元素(有数百个)。它在添加第3行到第8行后仍然有效,但它不会切换回“display:none;” (总有一个元素可见)。

我只有Javascript的基本知识,我看不出我做错了什么。有人可以给我一个提示/解决方案吗?

<script type="text/javascript">
function toggle_visibility(id) {
    numb = document.forms.length
    for(i=1;i<numb+1;i++) {
        j="N"+i
        elemnt = document.getElementById(j); 
        elemnt.style.display = "none";
    }
    var e = document.getElementById(id);
    if(e.style.display == 'none')
        e.style.display = 'block';
    else
        e.style.display = 'none';
}
</script>

2 个答案:

答案 0 :(得分:0)

你没有在for -loop中声明我是局部变量。请使用this.Also你还没有声明elemnt变量。希望你不要它是全局变量

 for(var i=1;i<numb+1;i++) {
            j="N"+i
       elemnt = document.getElementById(j); 
       elemnt.style.display = "none";
           }

答案 1 :(得分:0)

首先尝试声明所有变量:

function toggle_visibility(id) {
  var i, elemnt, state,
    numb = document.forms.length + 1;
  for( i = 1; i < numb; i++ ) {
    elemnt = document.getElementById( "N" + i );
    elemnt.style.display = "none";
  }
  elemnt = document.getElementById( id );
  state = elemnt.style.display === 'none';
  elemnt.style.display = state ? 'block' : 'none';
}