看板 Ajax 關於我們 聯絡資訊
Fx乃利用事件所呼叫的函式 額外加一個事件參數 藉以傳遞參數 不過 透過動態方式給定的事件 卻發生錯誤?? //用迴圈一一指定node的事件行為 node.onclick = new Function("if(keyVerify(event)==0)toPage("+i+")"); // keyVerify()判斷是否為左鍵 然後執行toPage(i) 不過我發現keyVerify裡面抓不到event event = event || window.event; 但是如果透過html就可以抓到event: <a onClick="if(keyVerify(event)==0)toPage(0);">foooool!</a> 滿奇怪的 IE 和 Chrome都可以, 為什麼就Fx要用下面這種奇怪的方法? node.setAttribute("onClick", "if(keyVerify(event)==0)toPage("+i+");"); 有onclick可以用 setAttribute拿來設定事件還滿怪的吧? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.162.194.103
TonyQ:不是setAttribute 的問題 是要手動傳 event 這個參數進去。 01/15 18:37
TonyQ:ex. 01/15 18:37
TonyQ:document.getElementById("test").onclick= 01/15 18:37
TonyQ: new Function("alert(event);"); 01/15 18:37
TonyQ:早期寫跨瀏覽器的 event 相容,標準寫法都是這樣寫的 01/15 18:37
TonyQ:dom.onclick = function(event){ 01/15 18:38
TonyQ:event = event || window.event ; 01/15 18:38
TonyQ:// do something 01/15 18:38
TonyQ:} 01/15 18:38
StarTouching:不過就算我把event加上去 01/15 18:39
StarTouching:Fx錯誤主控台還是會說 event not defined 01/15 18:39
※ 編輯: StarTouching 來自: 1.162.194.103 (01/15 18:42)
TonyQ:為什麼 arguments[0] 沒抓到 event 01/15 18:42
StarTouching:所以我找來找去 還是只找到setAttr的寫法 01/15 18:42
TonyQ:it works for me http://jsfiddle.net/zKmeb/ 01/15 18:43
TonyQ:你 keyVerify 有放 event 當第一個 param 嗎? 01/15 18:44
TonyQ:我覺得你要嘛就乾脆一點把 code 放齊 XD 01/15 18:44
TonyQ:這樣一邊寫一半很容易掉東西 01/15 18:44
StarTouching:我找到問題了 Fx要把event當作function參數 01/15 18:47
StarTouching:i.e. Function("event", "if(keyVerify(event)")...) 01/15 18:48
StarTouching:不過還是沒搞懂 正在思索中... 01/15 18:49
StarTouching:我想最好的解釋是 匿名函式必須傳遞event參數 01/15 18:51
StarTouching:內部不會自動獲得event 01/15 18:52
StarTouching:所以說 IE和Chrome能執行 應該都是因為window.event 01/15 18:53
StarTouching:另外像html onclick=後面的部分自動就會有event傳入 01/15 18:57
StarTouching:主要差異在這裡 01/15 18:57