作者SansWord (是妳)
看板Web_Design
標題Re: [問題] js在迴圈裡設定函數
時間Wed Jan 15 11:01:25 2014
※ 引述《lturtsamuel (港都霹靂火)》之銘言:
: 不好意思問題有點不清楚
: 我想問的是,在一個for迴圈中,變數i的質每次都會變
: 要怎麼用i來當作函數的變數呢?
: 好像越講越不清楚,舉個例子好了
: 像是我html裡有三個div,id就叫d1,d2,d3好了
: 現在我想要設定他們的onclick,按到d1時會alert("hello 1!")這樣,以此類推
: 直覺想到的方法是
: window.onload = {
: for(var i = 1; i <= 3; i++) {
var d = getElementById('d' + i),
message = 'hello' + i;
: d.onclick = function() {
alert(message);
: };
: }
: }
: 不過這樣每個都alert("hello 4!")
: 我的想法是把i用字面上的形式保留下來,不過不知道怎麼做
: 所以po來這邊請各位高手解答,感恩...
雖說用 closure 很潮,可是如果再這個使用情境,其實只要把message 先行算出即可。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.250.147.33
→ mmis1000:其實你可以用推文,用closure可以減少重複的代碼數量 01/15 11:48
→ lyforever:很遺憾 你的方法會失效 XD 01/15 13:22
→ lyforever:用closure不是潮 是有其必要性 01/15 13:42
→ s25g5d4:問題根本不在先行算出 而是後面的運算會取代前面的結果 01/15 15:50
→ s25g5d4:Javascript 裡面沒有 block 作用域 我猜你可能是寫 C 的 01/15 15:50