我可以在JavaScript的事件触发函数中获得html元素吗?
Can I get the html element in an event trigger function in JavaScript?
编辑:我需要提到我不想使用jQuery。
这是我的代码。我需要访问触发事件的元素,这样我就不必为每个html元素创建两个不同的函数。
document.getElementById("login").onmouseover = turnWhite;
function turnWhite(e){
}
我可能需要这样的东西。我不知道这是否可能。
function turnWhite(e){
e.HTMLEL.style.color = "white";
}
这可能吗?
根据javascripter.net
- e。Internet Explorer 中的srcElement
- e。
如果您想将相同的事件函数应用于一组元素,您可以尝试这样做:
var buttons = document.getElementsByClassName("change");
for(var i = 0;i < buttons.length;i++){
buttons[i].onmouseover = function(){
this.style.color = "red";
}
}
演示:http://jsfiddle.net/louisbros/rt24U/
您应该能够使用e.target
或e.currentTarget
。然而,每个浏览器的行为似乎是不同的……最好使用jquery或yui之类的库。这里有一些文档
这是JSFiddle,您可以使用它:http://jsfiddle.net/9nr4Y/
HTML:<div class="login">Login</div>
<br />
<div class="login">Login 2</div>
JavaScript: (function() {
var elms = document.getElementsByClassName("login"),
l = elms.length, i;
for( i = 0; i < l; i++ ) {
( function( i ) {
elms[i].onmouseover = function() {
this.style.color = "#000000";
this.style.background = "#FFFFFF";
};
})(i);
( function( i ) {
elms[i].onmouseout = function() {
this.style.color = "#FFFFFF";
this.style.background = "#000000";
}
})(i);
}
})();
创建一个自调用函数,然后根据类名获取元素。这样做的原因是,无论如何,您都不希望拥有多个具有该ID的元素。获取类名将生成一个包含该类的项的Array。然后,您可以遍历新数组并将事件分配给每个数组。
然后我们用"this"代替实际的事件来获取每个单独的元素。
供参考:如何在getElementsByClassName
你也可以使用这个非标准的跨浏览器hack:
document.getElementById("login").onmouseover = function () { turnWhite(); }
function turnWhite(){
var myEventElement = turnWhite.caller.arguments[0].target;
//do something with myEventElement
}
当你想避免传递参数时非常有用。
演示:http://codepen.io/mrmoje/pen/avbEm
相关文章:
- 如何设置html元素填充的动画
- 删除对HTML元素的拖动
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 一个html元素的克隆次数太多
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 为什么我在Internet Explorer上看不到html元素
- 重新排列HTML元素的顺序并更改内容
- 使用.on动态添加jquery/js不知道的html元素
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 如何将html元素添加到tampermonkey中
- 访问html元素值javascript
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 自定义HTML元素属性未显示-Web组件
- 让HTML元素充当停止滚动的锚点
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 替换HTML元素中的字符
- 如何将html元素添加为生成的内容
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用JS加载HTML元素