2014-04-12 148 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

編輯了這個錯誤。 –