2017-04-06 31 views
0

HTML內捕獲this.id for循環(JS)

<button class="button" id="1">Button 1</button> 
<button class="button" id="2">Button 2</button> 

JS

const button = document.getElementsByClassName('button'); 

function chooseButton() { 
    // works 
    let buttonId = this.id; 
    console.log('You choose button' + buttonId); 
}; 

// Check for button click 
for (var i = 0; i < button.length; i++) { 
    button[i].addEventListener('click', chooseButton, false); 
} 

我如何監聽buttonId,抓住它並利用它的功能之外?

if (buttonId == 1) { 
    // do this 
} 
+0

功能之外?你的問題使得它看起來就像添加了事件監聽器後立即有一個'if'語句一樣......所以它永遠不會匹配,因爲if語句將在用戶點擊任何內容之前運行。 – Quentin

回答

0

您需要定義的功能外buttonId變量:

const button = document.getElementsByClassName('button'); 
 
let buttonId; 
 
function chooseButton() { 
 
    buttonId = this.id 
 
    console.log('You choose button' + buttonId); 
 
    checkerFunction(); 
 
}; 
 
for (var i = 0; i < button.length; i++) { 
 
    button[i].addEventListener('click', chooseButton, false); 
 
} 
 

 
function checkerFunction() 
 
{ 
 
    if (buttonId == 1) 
 
    { 
 
\t \t console.log('TEST :: You choose button' + buttonId); 
 
    } 
 
    else 
 
    { 
 
\t \t console.log('TEST :: You choose the other button' + buttonId); 
 
    } 
 

 
}
<button class="button" id="1">Button 1</button> 
 
<button class="button" id="2">Button 2</button>

爲了驗證該值是可讀的,我們只需要調用checkerFunction用於測試目的。

1

如果你想在外面訪問它,你不應該使用let裏面的函數。應該

let buttonId; 
function chooseButton() { 
    // works 
    buttonId = this.id; 
    console.log('You choose button' + buttonId); 
};