在我添加第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>
答案 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';
}