看板 Web_Design 關於我們 聯絡資訊
※ 引述《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