看板 Web_Design 關於我們 聯絡資訊
請問一下 假設我有一個表單欄位 會讓好幾個 function 使用到 所以我想把他宣告為全域變數 請問我該怎麼做呢? (直接放在外面會有錯誤訊息) 例如: var fy=document.getElementById('Y'); function a1(){ fy.value=1; } function a2(){ fy.style.left=0; } function a3(){ fy.style.top=0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.240.131.70
xiphoid:var window.fy 06/08 11:32
xiphoid:更正: 不需要var。window.fy = xxxxx就好 06/08 11:37
chocho1981:樓上 沒辦法呢 不管是寫在js檔裡或是直接寫在網頁上都 06/08 12:15
chocho1981:還是不行 對了 忘記說我的瀏覽器是IE6 06/08 12:16
xiphoid:我也不行,研究中。你的錯誤結果是fy未定義嗎,用fx也是 06/08 12:27
xiphoid:一樣的結果。應該是call a1 a2 a3時,fy還沒產生。 06/08 12:27
xiphoid:問題發生在把fy宣告在$(document).ready()裡面(如果你用 06/08 12:33
xiphoid:jquery),之後又馬上call a1。 06/08 12:35
xiphoid:不用ready()並把js code搬到</body>前可以解決。 06/08 12:35
chocho1981:恩 他會顯示未定義 06/08 12:57
chocho1981:原本是寫在區域變數內 但是每次都要宣告一次就很累贅 06/08 12:58
chocho1981:我不是用 jquery 呢@@ 06/08 13:00
xiphoid:抱歉 頭腦有點混亂 沒注意到用framework就不會這樣寫了 06/08 13:04
xiphoid:如果放外面也未定義 可能是var fy時 那個input還沒讀到 06/08 13:04
xiphoid:把js放</body>前也不行嗎? 06/08 13:04
PsMonkey:應該是把 fy=xxxx 放到 <body> 後 06/08 13:37
mesak:一開始先var fy ; ready之後 在 fy=byid 或是搬到 </body> 06/08 14:16
mesak:之前,你用jquery會簡單的多 06/08 14:17
chocho1981:http://w14.loxa.com.tw/chocho/web/test.htm 06/08 14:17
chocho1981:噁 一定要用jquery嗎? 我只是想簡化我的程式碼而已QQ 06/08 14:18
chocho1981:目前寫在<body>之間 還是沒辦法做出來 06/08 14:19
mesak:寫個 load的 function 就好 06/08 14:19
mesak:你放外面先不要給值,網頁還沒讀取完他抓不到 06/08 14:20
mesak:所以放最後面,或是 LOAD 之後再跑就行了 06/08 14:21
xiphoid:window.onload=function(){var fy=xxxx} 可以這樣寫 06/08 14:35
xiphoid:如果不在乎必須等圖片, css全部讀取完才會執行 06/08 14:35
xiphoid:呃 是放</body>的前面 不是<body> 06/08 14:37
xiphoid:http://jsbin.com/eqane3/2/edit 可以跑 06/08 14:52
xiphoid:你之前的全域變數寫法沒錯 但用window.fy不能加var 06/08 14:52
xiphoid:jsbin很像不支援IE6 請用別的開 06/08 14:57
chocho1981:放棄了 囧 06/08 19:57
xiphoid:http://pastebin.com/68xmB3ap 06/08 20:09
xiphoid:重貼之前jsbin的. 這個也不能跑? 06/08 20:10
chocho1981:咦....同樣的寫法為何你的可以? 06/08 20:29
chocho1981:這..太神奇了吧..我下午是在搞什麼... 06/08 20:35
chocho1981:感謝囉^^ 終於解決了.... 06/08 20:35
不好意思 再問一下 我目前用這個方法慢慢縮短我的程式碼 不過在程式一開始就以 window.fy=xxxx 設定全域變數的寫法 對於整個程式的運作上會有幫助嗎?? 或是反而會造成負擔? ※ 編輯: chocho1981 來自: 210.240.131.71 (06/08 21:20)
hubertwu:適當的使用是很ok的~尤其是需要重複call的 06/09 11:56
hubertwu:但是濫用反而會造成一些類似memory leak的困擾 06/09 11:57
hirabbitt:我的程式碼就是一直重複call... 06/09 13:59
hirabbitt:原本想說寫完再改 但現在越寫越多 不想改了... 06/09 14:00