2014-04-12 113 views
1

我有一个简单的问题: 我有一个函数,它将ID存储在名为“view1”的数组中。当满足某些要求时,我希望这些ID的onclick可以更改。我希望它们在单击时加载名为clickMem(id)的函数,并在函数中发送它们的id。 所以我试着用数组中的第一个ID来试试这个,它没有工作,我做错了什么?JavaScript - 用变量更改div的onclick?

document.getElementById(view1[0]).onclick='clickMem('+view1[0]+');'; 

预先感谢您!

+0

'onclick'期望的功能,而不是一个字符串。请参阅https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onclick –

+0

设置onclick事件将不会执行任何操作,而是将函数绑定到事件。事件需要被触发才会发生。从阅读你的问题,这听起来像你希望函数在符合条件时运行,而不是仅仅绑定函数而什么都不做。我对吗? –

+0

哦,不,我只是想把这个函数绑定到id。 我不希望它运行,直到点击与id的div。 我恐怕下面的答案似乎不适用于我... – user3527311

回答

1

使用setAttribute

var new_onclick = 'clickMem('+view1[0]+')'; 
    document.getElementById(view1[0]).setAttribute('onclick',new_onclick); 

但要注意:

document.getElementById('buttonLED'+id).onclick = clickMem(view1[0]); 

设置元素的clickMem(view1[0])结果的onclick属性,因为它会调用 该功能,并指定由返回的值功能到onclick属性,这是你不想要的。

所以通过一个function(){clickMem(view1[0]);}

document.getElementById('buttonLED'+id).onclick = function(){clickMem(view1[0]);} 

它也能正常工作。

+0

为什么不document.getElementById(view1 [0])。onclick = clickMem(view1 [0]);? –

+0

@vivek_nk:这会立即执行'clickMem',而不是触发点击事件。 –

+0

@Aditya:您的'.onclick'解决方案与'setAttribute'解决方案不同。 –

0

试试这个:

document.getElementById(view1[0]).onclick=function() {clickMem(view1[0]);} 
+0

你假设'clickMem'返回一个函数,它可能不会这样做。 –

+0

编辑了这个错误。 –