在鼠标上更改类属性输入

时间:2016-04-05 09:41:29

标签: javascript html

我对这个剧本感到不满,因为我不明白为什么它不起作用,因为它应该很简单,我只想展示和隐藏一个某些div或改变它的属性。

使用Javascript:

function show(x){
    var y = document.getElementByClassName(x);
    y.style.display= 'block';

}
function hide(x){
    var y = document.getElementByClassName(x);
    y.style.display = 'none';

}

HTML:

<a href='http://dreamspark.e-uvt.ro/dreamspark/'target='_blank'onmouseover='show('divdreamspark')'onmouseleave='hide('divdreamspark')'>

CSS:

.divdreamspark {
    display: none;
}

我不知道自己做错了什么。

1 个答案:

答案 0 :(得分:1)

有很多问题:

  1. 你搞砸了标记中的单引号。
  2. .getElementsByClassName部分中的方法s缺少Element,这是一个错字。
  3. 更新标记:

    <a href='http://dreamspark.e-uvt.ro/dreamspark/'target='_blank' 
       onmouseover='show("divdreamspark")' 
       onmouseleave='hide("divdreamspark")'>
    

    更新js:

    function show(x){
        var y = document.getElementsByClassName(x)[0]; // <---missing s in Element
        y.style.display= 'block';
    }
    function hide(x){
        var y = document.getElementsByClassName(x)[0]; // <---missing s in Element
        y.style.display = 'none';
    }
    

    如果元素是单个,则选择器的后缀为[0](尽管类选择器返回一个集合)。如果您正在处理多个元素,那么您必须使用循环来迭代并隐藏它们中的每一个。

    function show(x) {
      var y = document.getElementsByClassName(x);
      [].forEach.call(y, function(i, el) {
        el.style.display = 'block';
      });
    
    }
    
    function hide(x) {
      var y = document.getElementsByClassName(x);
      [].forEach.call(y, function(i, el) {
        el.style.display = 'none';
      });
    }