我正在編寫一個Javascript遊戲作爲練習對象和AJAX。它涉及wessels在航海主題網格周圍的移動。雖然wessels是在一個對象的數組中,我需要操縱他們的圖形表示,他們的精靈。目前,我從DOM角度選擇在'td'元素中使用'img'元素。 從UI連續性的角度來看,推薦使用Javascript以編程方式移動元素的方法:
(a)刪除'from'單元格(td元素)的內部html並重寫'to'單元格的內部html,
b)克隆img節點(sprite),從其父節點刪除原始節點,並將其附加到'to'單元格,或者(c)使用相對於精靈表格元素的定位,忽略td的alltogether儘管他們的背景[顏色]代表了海洋的深度)。移動DOM元素的方法
0
A
回答
0
我一定會堅持將精靈從單元格移動到單元格,而不是使用相對定位到表格。我的推理是,表格單元的大小可能因瀏覽器而異(因爲填充,邊距等方式會產生差異 - 特別是在惱人的IE中),並計算精確位置來定位精靈,以便它在內部排列給定的單元格可能會變得複雜。
將其縮小爲(a)或(b)以供您選擇。這裏讓我們去掉選項(a),因爲從裏面刪除HTML並不是乾淨的操作DOM的方式。我喜歡將節點存儲在一個對象中,然後將其附加到'to'單元,然後刪除原來的節點,這是您的選項(b)建議的。這樣,你仍然不需要處理高級別的「對象」而不是低級別的「文本」。你不需要混淆文本 - 對於這樣的應用程序,如果你不知道JavaScript已經提供的DOM操作函數,那將是骯髒的「黑客」方法。
我的回答是(b)。然而,如果你絕對需要速度 - 雖然對於你的遊戲,我不知道你是否真的需要額外的提升 - 你可能會考慮選項(一)。一些來源,如http://www.quirksmode.org/dom/innerhtml.html爭辯說,DOM操作方法通常比使用innerHTML慢。但這是一切的一般規則。你走的級別越低,你的代碼就越快。級別越高,代碼越容易理解和概念化,並且在我看來,由於速度不會在這種情況下產生巨大的差異,因此保持整潔並符合(b)。
0
不需要克隆img節點,刪除舊節點並追加克隆。只需將img節點附加到接收td。它會自動從以前的td中刪除。簡單,有效和快速。
相關問題
- 1. jquery after()方法移除DOM元素
- 2. 用append()移動DOM元素?
- 3. 使所有的DOM元素移動
- 4. DOM中的JavaScript移動元素
- 5. Ember.js組件移動DOM元素
- 6. 使用jQuery移動DOM元素
- 7. 移動DOM HTML元素左右
- 8. 當聽一個DOM元素移動爲
- 9. 移動第一DOM最後的DOM元素後的JavaScript
- 10. 獲取DOM元素的正確方法
- 11. DOM元素的新附加方法?
- 12. 的jQuery replaceWith()方法(DOM元素替換)
- 13. 動畫DOM元素
- 14. 無法將DOM元素移動到其他位置
- 15. 的DOM元素移動的動畫,因爲增加一個元素
- 16. 在ASP.NET中跟蹤動態創建的DOM元素的方法
- 17. Backbone.js DOM元素引用方法
- 18. 無法訪問動態DOM元素
- 19. 移動元素?
- 20. 無法移動的元素更接近浮動元素
- 21. 無法訪問DOM元素
- 22. 檢測被移動的DOM元素的位置
- 23. 將dom元素移至循環中
- 24. 在DOM移動的div - 使用選擇拿好特定元素
- 25. 刪除的DOM元素仍然顯示在移動Safari(iOS 5.1)
- 26. 移動與同一類更多的元素在DOM
- 27. 浮動元素下元素的位移
- 28. 滾動時控制/動畫dom元素的最佳方式
- 29. 在DOM中移動元素時,該元素是否保持狀態?
- 30. 移動元素shortdesc