0

我在 Google Chrome 中设置了一堆项目<div id="first" class="source"> ,当页面加载时,当我单击 OnClick 按钮时它会隐藏这些项目,它会取消隐藏它们,但我无法再次单击它并使其隐藏。

HTML

<body onload="setup();">
<a  href="#first" onClick="shoh('first');" >

JS:

function setup() {
  foo = document.getElementById('first');
  foo = document.getElementsByClassName('source');
  for (c=0; c<foo.length; c++) {
    foo[c].style.display='none'
  }
}


function shoh(id) {
  if (document.getElementById(id).style.display = 'none'){
    var divs = document.getElementById(id);
    for(var i=0; i<divs.length; i++) { 
      divs[i].style.display='block'
    }
  } else {
    cow = document.getElementById(id);
    for(a=0; a<cow.length; a++) { 
      cow[a].style.display='none'
    }
  }
}
4

2 回答 2

3

您的条件没有进行比较。你需要改变

if (document.getElementById(id).style.display = 'none'){

if (document.getElementById(id).style.display == 'none'){
于 2013-04-04T22:55:46.663 回答
2

你有几个问题:

如果您比较需要使用的两个变量==,那么它应该是:

document.getElementById(id).style.display == 'none'

此外,您正在使用getElementById,它返回单个节点,而不是数组。因此,您不应遍历返回的值:

var div = document.getElementById(id);
div.style.display='block';

所以最后,它应该是这样的:

function shoh(id) {
  if (document.getElementById(id).style.display == 'none'){
    var div = document.getElementById(id);
    div.style.display='block';
  } else {
    cow = document.getElementById(id);
    cow.style.display='none';
  }
}
于 2013-04-04T22:58:24.693 回答