看板 Web_Design 關於我們 聯絡資訊
※ 引述《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:http://jsfiddle.net/zw8S3/ 好好想清楚吧 01/15 15:49
s25g5d4:問題根本不在先行算出 而是後面的運算會取代前面的結果 01/15 15:50
s25g5d4:Javascript 裡面沒有 block 作用域 我猜你可能是寫 C 的 01/15 15:50