JavaScript DOM addeventlistener pass paramater
JavaScript DOM addeventlistener pass paramater
>好的,我有:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript index</title>
</head>
<body id="body">
<p id="para">Hello I am Sam</p>
<script>
"use strict";
var element = document.getElementById("para");
element.addEventListener( "click", function(color){
this.style.backgroundColor = color;
}, false );
</script>
</body>
</html>
我的主要问题是关于:
element.addEventListener( "click", function(color){
this.style.backgroundColor = color;
}, false );
有没有办法动态传入颜色还是必须硬编码?
一种解决方案是使用命名函数添加处理程序,例如
function addClickHandler(element, color) {
element.addEventListener("click", function (e) {
this.style.backgroundColor = color;
}, false);
}
然后
addClickHandler(element, 'red')
另一种解决方案是使用 composition 并拥有一个返回处理程序的函数。
function createHandler( color) {
return function (e) {
this.style.backgroundColor = color;
};
}
element.addEventListener( "click", createHandler('red'), false );
或者我认为是所有解决方案中最优雅的,Function.bind
function clickHandler(color, e) {
this.style.backgroundColor = color;
}
var divs = document.getElementsByTagName('div');
var colors = ['blue', 'red', 'gray'];
for (var i = 0; i < divs.length; i++) {
divs[i].addEventListener('click', clickHandler.bind(divs[i], colors[i]), false);
}
div {
height: 100px;
width: 100px;
border: 1px solid firebrick;
display: inline-block;
margin: 5px;
}
<div></div>
<div></div>
<div></div>
相关文章:
- 如何使用pass参数从jQuery.getJSON获取回调
- JavaScript DOM addeventlistener pass paramater
- jQuery to pass Checkbox Update mysql
- 如何在 Python 中从 JavaScript CryptoJS.AES.encrypt(password, pass
- 无法破解pass-css插件以使两个输入元素出现在一行中
- pass函数是JavaScript中的一个参数
- 如何将bind()pass-through(to on())转换为delegate()-就像jQuery 1.7.1代码
- javascript pass
- Chrome插件开发:用户:pass@url不再被谷歌浏览器支持
- Smarty - pass variable
- JS SDK facebook API pass access token
- pass 'this' to alertify
- 用密钥加密javascript中的pass,然后检索原始密码(尽可能安全)
- 跨并行组件的React Pass状态
- Ajax doesn't pass the argument
- rehash of encrypted pass在Node.js中使用crypto返回不同的结果
- 有没有类似于Python pass语句的JavaScript,它什么都不做
- What is JavaScript `pass`
- HTTP post - pass一个javascript对象到MVC控制器
- Facebook Connect / Pass用户名到数据库进行存储