2016-08-23 35 views
1

我想创建一个div并动态地创建ComboBox,然后将ComboBox放入div中。请参阅下面的代码。当我运行代码时,抛出无法在'Node'上执行'appendChild':参数1不是'Node'类型(...)“TypeError:'Node'上执行'appendChild'失败:参数1不是类型“节点”动态创建一个div和组合框,并将组合框放在使用Dojo的div中

什么是放置在div的ComboBox正确的方法是什么?

var comboBox = new ComboBox({       
 
    name: "state" 
 
}); 
 
comboBox.set('style', {width: '100%', height: '35px', fontSize: '30px'}); 
 

 
var comboBoxDiv = domConstruct.create("div"); 
 
comboBoxDiv.id = "state"; 
 

 
domConstruct.place(comboBox, comboBoxDiv);

回答

1

你得到这个错误,因为domConstruct只能处理DOM节点,和你正试图与一个使用它n对象,但是,你仍然可以使用它,只需要通过组合框domNode

domConstruct.place(comboBox.domNode, comboBoxDiv); 

domNode是一个连接点,所有的部件有,它参考widget的根模板。

此外,我注意到在您的代码中,您正在使用domConstruct创建一个div,但是,您并未将该div放在DOM中。类似这样的:

var comboBoxDiv = domConstruct.create("div"); 
domConstruct.place(comboBoxDiv, "someID");//or some node, attach point 

看一看domConstruct documentation

在dom中放置小部件的另一种方法是使用placeAt函数。或者,通过向构造函数传递第二个参数,该构造函数可以是字符串(圆顶中en元素的id)或节点。

var comboBoxDiv = domConstruct.create("div"); 

var myComboBox = new ComboBox({       
    name: "state" 
}, comboBoxDiv); 
+0

谢谢。他们都工作! –