如何使用JavaScript更改CSS显示属性?

时间:2015-01-05 06:31:14

标签: javascript html css

我在将CSS显示属性更改为" none"时遇到问题。使用javascript

这是我的代码:

<div class="mydiv" onClick="clickDiv1()">hello</div>
<div class="mydiv" onClick="clickDiv2()">hi</div>
<div class="mydiv" onClick="clickDiv3()">goodbye</div>

这是我的剧本:

 function clickDiv1() { 
alert('You clicked the first div!');
document.getElementByClassName('mydiv').style.display="none";
}

 function clickDiv2() {
alert('You clicked the second div!');
document.getElementByClassName('mydiv').style.display="none";
}

 function clickDiv3() {
alert('You clicked the second div!');
document.getElementByClassName('mydiv').style.display="none";
}

我想要的是,不同的div在点击时会提醒不同的文字,但是当点击任何div时,所有div都是不可见的。

当我点击我的div时,警报会执行,但样式不会改变。

为什么它不起作用?请帮帮我!!

2 个答案:

答案 0 :(得分:1)

区别在于当您使用类document.getElementByClassName('mydiv')时,它会返回一个数组。所以你需要使用document.getElementByClassName('mydiv')[i],其中i是数组索引。但是document.getElementById('div3')只会给你一个项目。

document.getElementByClassName('mydiv')[0].style.display="none";

document.getElementById('div3').style.display="none"; 

应该有用。

答案 1 :(得分:0)

用于选择HTML元素的正确Javascript方法是getElementsByClassName()

这将返回DOM中具有该类名称的所有元素的数组,您需要循环并单独将显示设置为none

对于您的示例,此代码可以使用:

function hideAll() {
  var elems = document.getElementsByClassName('mydiv');
  for (i = 0; i < elems.length; i++) {
    var elem = elems[i];
    elem.style.display = 'none';
  }
}

function clickDiv1() {
  alert('You clicked the first div!');
  hideAll();
}

function clickDiv2() {
  alert('You clicked the second div!');
  hideAll();
}

function clickDiv3() {
  alert('You clicked the third div!');
  hideAll();
}