作者tomin (stuffy)
看板Web_Design
標題Re: [問題] 很奇怪的javascript問題
時間Sat Aug 29 00:33:44 2009
※ 引述《ncuman (ncuman)》之銘言:
: 煩請大大給小弟意見
: 我在做關於google map的網頁,想在地圖能看到的範圍內才會有標籤顯示
: marker.show(),然而在顯示範圍以外就 marker.hide(),但問題在只要在
: 網頁內加上window.alert('')無論是輸出什麼,只有加上alert這語法,
: 這個show() or hide() 就能正常顯示或隱藏,但如果沒加上alert('')便
: 會出部標籤都會顯示出來。
: 小弟百思不得其解為啥加上alert 才能正常顯示或隱藏標籤,而且其它
: javascript 部份都是正確的。
: 這問題快煩死了
可能是以下原因:
1.DOM Tree還未建完,你就做動作。
假設有2個以上的function a,b (後面的)b要等(前面的)a建完DOM 才能動作
如果b不等a,b做動作時,可能a還沒建好b需要用到的DOM,導致b動作無效。
例如a有一個... callback(){
//至少要1秒才會跑到這裡
...html("<span id='sayhi'>Charlie</span>")
}
b則是 $("#sayhi").css("color","red");
2.你的code某個地方有寫錯。因此可能部分code有跑到,剩餘的沒有。
為什麼加alert就可以了?
如果是1.情形 那就是alert剛好停了那幾秒 讓function完整跑完 建完DOM了
2.的話 我也不確定怎麼回事 有時候code就是很神奇 you know
解決辦法:
1.的話 可考慮setTimeout/setInterval等前面的跑完(或是後段的等幾秒再跑)
或是後段的code 寫在更精確的地方 例如前段的callback{}框框裡
2.debug吧.....這情況太多種了 善用firebug,IE開發者工具等等
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.40.183
推 ncuman:感謝大大的解答 08/29 10:42
推 kewang:我自己在開發gmaps的時候 也會用到setTimeout 可是這樣子 08/30 11:35
→ kewang:程式就會變成很dirty 很多地方都需要用到 不知道有什麼解 08/30 11:36