悬停时的JavaScript执行对元素唯一的操作

时间:2014-06-25 19:00:06

标签: javascript html css

我正在尝试为我的网站制作一个基本的JS文件,这就是它需要做的事情。我需要它用classname'program'来挑选所有div,并且根据哪个'program'被覆盖,执行一个对该元素唯一的动作。这是可能的,还是我必须在更具体的步骤中移动并转到定位唯一ID或数据属性?

到目前为止我唯一能做的就是:

var programs = document.getElementsByClassName('program');

这是为了获得DOM中出现的所有“程序”的“数组类似”列表。然后我想要一个悬停功能,根据哪个'程序'悬停,程序[0],程序[1],程序[2]或程序[3],执行特定操作。

请不要jQuery!

4 个答案:

答案 0 :(得分:2)

可能有很多方法可以执行此操作,但您可以使用EventListener来实现此目的。

这是如何做到的:

var x=0;//global variable

    document.addEventListener('DOMContentLoaded',function(){    
    var programs = document.getElementsByClassName('program');

        for(var i=0;i<programs.length;i++){
            programs[i].addEventListener('click',someFtn);
            x=i;
        }

        function someFtn(event){
           console.log(this.id); //it will give you the ID of clicked program
           console.log(x);  // tells which 'i' it was
        }
    });

P.S:以上是Click事件的简单解决方案,请自行尝试Hover事件。这很容易。

答案 1 :(得分:0)

使用.querySelectorAll - https://developer.mozilla.org/en/docs/Web/API/Document.querySelectorAll

使用getElementsByTagName +遍历的老派方法(仅建议用作polyfill)

答案 2 :(得分:0)

当&#34;程序&#34>时,你可以使用onmouseoverevent执行一些javascript。元素徘徊。

var programs = document.getElementsByClassName('program');
for(var ctr = 0; ctr<programs.length; ctr++)
{
    programs[ctr].onmouseover=function(sender){
        //some action on hover here
        alert("id of element hovered: " + sender.target.id);
    };
}

请参阅fiddle

编辑:为每个元素添加了唯一要求,使用ID作为示例

答案 3 :(得分:0)

使用可以直接附加到DOM元素的事件处理程序,Javascript支持DOM元素的MouseOver。

首先使用document.getElementsByClassName功能:http://www.w3.org/TR/2008/WD-html5-20080610/dom.html#getelementsbyclassname

其次,附上每个项目onmouseover功能:http://www.w3.org/TR/html401/interact/scripts.html#adef-onmouseover

或者作为替代方案,如果它本质上风格CSS也使用鼠标悬停处理:悬停 参考:http://www.w3.org/wiki/CSS/Selectors/pseudo-classes/:hover

祝你好运!