Javascript 发送不带函数init的参数
我有一个收集class.colors元素的代码Javascript 发送不带函数init的参数,javascript,function,parameters,Javascript,Function,Parameters,我有一个收集class.colors元素的代码 var colors = document.querySelectorAll('.colors'); 和将事件分配给所有元素的循环 for (var i=0;i<colors.length;i++) { var color = colors[i]; color.addEventListener('click', remember(color.getAttribute('id')), false); } 功能参数不能直接传递
var colors = document.querySelectorAll('.colors');
和将事件分配给所有元素的循环
for (var i=0;i<colors.length;i++) {
var color = colors[i];
color.addEventListener('click', remember(color.getAttribute('id')), false);
}
功能参数不能直接传递给事件侦听器。相反,实例化一个简单的函数并像下面那样传递参数
函数记忆(id){
console.log(id);
}
var colors=document.querySelectorAll('.colors');
对于(变量i=0;i
.colors{
填充物:5px10px;
背景颜色:浅绿色;
}
点击我-我是第一组
单击我-我是Div 2
我认为这不可能!我认为你的问题解释得不够清楚。如果要获取单击的DOM元素的id
,是否正在尝试在不使用“.getAttribute”的情况下查找“color”的id。无论如何,您都可以在单击Listener
中获得它。您可以获取侦听器的target
元素,然后执行getAttribute
I尝试将color.getAttribute值作为参数发送到函数。问题是浏览器将带有函数名和方括号的代码行解释为函数的初始化。但它不是-括号仅用于发送参数。@Adamsky97:是的,这是所需的行为。尝试color.addEventListener('click',function(){记住(color.getAttribute('id'))},false)
我相信color
应该是回调函数中的this
,否则它将始终访问最后一个元素。
function remember(color_value) {
localStorage.setItem('color', color_value); }