2017-10-10 50 views
0

我現在有代碼,這是否:變量不傳遞給函數

$('#BoxShadow_1').click(function() 
{ 
addDivBoxShadow('BoxShadow_1'); 
}); 

$('#BoxShadow_2').click(function() 
{ 
addDivBoxShadow('BoxShadow_2'); 
}); 

...等10個相似的元素。它工作得很好。

我也在使用JQuery。

我想更改代碼以這樣的事:

for (i = 1; i < 11; i++) { 

    $('#BoxShadow_' + i).click(function(){ 
     addDivBoxShadow("BoxShadow_" + i); 
    }); 

} 

挑戰是這樣的:

BoxShadow_10被分配給所有的div,而不是BoxShadow_1,BoxShadow_2等

FYI我試圖實現的代碼是我在這個URL寫的數學遊戲:

tinyurl.com/sashamath

在此先感謝。我希望在未來做出貢獻。

好了,這裏就是答案,使用'讓我們聲明如下:

for (let i = 1; i < 11; i++) { 

    $('#BoxShadow_' + i).click(function(){ 
     addDivBoxShadow("BoxShadow_" + i); 
    }); 

} 
+0

謝謝。關鍵是使用:'let'in:for(let i = 1; i <11; i ++) –

回答

2

的麻煩你的循環問題是經典的「在循環中的回調」。 '

然而,你根本不需要循環。只需使用thisid屬性即可獲取該ID。

function handler() { 
    addDivBoxShadow(this.id); 
} 

$('#BoxShadow_1').click(handler); 
$('#BoxShadow_2').click(handler); 

或者,如果你改變了addDivBoxShadow功能使用this來獲取元素,你可以直接通過。

$('#BoxShadow_1').click(addDivBoxShadow); 
$('#BoxShadow_2').click(addDivBoxShadow); 

所以現在addDivBoxShadow可以使用this引用結合元件,並且它也將接收event對象作爲參數。


當然,它也可以用一個選擇器來完成。

$('#BoxShadow_1, #BoxShadow_2').click(addDivBoxShadow);