2017-02-24 85 views
1

我正在處理HTML項目。基本上將HTML節點保存到JavaScript的Object中以將它們追加到元素中。這是我的HTML,JavaScript和錯誤。將HTML元素轉換爲「節點」類型

HTML

... 
    <div id="holder"></div> 
... 

的JavaScript

var _handler = {}; 
var _holder = document.getElementById('holder'); 
var some_example = [{"id":"item_1"}, {"id":"item_2"}] 

function create(tag, id) { /*Created a DOMObject */ 
    var elem = document.createElement(tag); 
    _handler[id] = elem; 
} 
function spawn() { 
    for (var k in _handler) { 
     _holder.appendChild(_handler[k]); //<----- Here's the error occurring, given at very last. 
    } 
} 
function main() { /* Main function */ 
    for (var x=0;x < some_example.length;x++) { 
     create('div', some_example.id); 
    } 
    spawn(); 
} 

對不起,這有點複雜腳本。不管怎麼說,所有的工作都很順利,但appendChild是否BOBO如下

錯誤

Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.

希望,你們有什麼想法。謝謝。

+2

可能的重複[爲什麼使用「for ... in」與數組迭代是一個壞主意?](http://stackoverflow.com/questions/500504/why-is-using-for-in -with-array-iteration-a-bad-idea) – NineBerry

回答

3

確保在for循環中使用hasOwnProperty

for (var k in _handler) { 
    if (_handler.hasOwnProperty(k)) { 
     _holder.appendChild(_handler[k]); 
    } 
} 
+0

噢哇......擊中了靶心,謝謝。 – user92635438