2017-02-23 78 views
0

我有一些按鈕,具有相同的名稱anOldFile,我想要他們的ID或innerHTML,如果我點擊。我認爲這是一個良好的開端,但我不知道該怎麼繼續下去,如果這是件好事:如何獲得一個按鈕,如果我知道名稱的id - javascript

document.getElementsByName('anOldFile').addEventListener('click', changeOffCanvasContent(this)); 

    function changeOffCanvasContent(e) { 
     //??? 
    } 

回答

1

由於getElementsByName()回報節點列表,你需要遍歷和綁定事件處理程序的每個元素,只是通過函數引用。

document.getElementsByName('anOldFile').forEach(function (elem) { 
    elem.addEventListener('click', changeOffCanvasContent); 
}); 

這將設置的this到元件,它調用事件

function changeOffCanvasContent(e) { 
    console.log(this.id); 
    console.log(e.target.id); 
} 
+0

我得到這個錯誤:「document.getElementsByName(...)。addEventListener不是一個函數」 –

+0

@gaboraron,看到更新的一個swer – Satpal

1

你有幾個問題存在的環境。所有getElementsByName的拳頭返回節點元素的數組,所以你必須addEventListener給每個人。其次,您正在錯誤地註冊eventListener功能。您不應該在addEventListener中調用處理函數,而只需傳遞處理程序名稱。 Thridly函數定義,你可以通過引用目標元素如下得到元素的保留:

整個代碼片段,沒有工作應如下所示:

var elements = document.getElementsByName('anOldFile');

function changeOffCanvasContent(e) { console.log(e.target.innerHTML); console.log(e.target.id); }

for(var i = 0; i< elements.length-1; i++){ elements[i].addEventListener('click', changeOffCanvasContent); }

相關問題