动态创建div和组合框,并使用Dojo将组合框放入div中

时间:2016-08-23 20:49:58

标签: javascript combobox dojo

我想动态创建一个div ComboBox,然后将ComboBox放入div中。请参阅以下代码。当我运行代码时,抛出在'Node'上执行'appendChild'失败:参数1不是'Node'类型。(...)“TypeError:在'Node'上执行'appendChild'失败:参数1不属于'Node'

ComboBox放入div中的正确方法是什么?

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 个答案:

答案 0 :(得分:1)

您收到此错误是因为domConstruct仅处理DOM个节点,并且您尝试将其与对象一起使用,但是,您仍然可以使用它,只需要传递组合框{{1 }}

domNode

domConstruct.place(comboBox.domNode, comboBoxDiv); 是所有小部件都有的附加点,它引用了小部件的根模板。

此外,我注意到在您的代码中,您使用domNode创建了div,但是,您没有将该div放在domConstruct中。像这样:

DOM

看看domConstruct documentation

将小部件放入dom的另一种方法是使用var comboBoxDiv = domConstruct.create("div"); domConstruct.place(comboBoxDiv, "someID");//or some node, attach point 函数。

placeAt

或者,通过将第二个参数传递给构造函数,该构造函数可以是字符串(圆顶中的en元素的id)或节点。

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

var myComboBox = new ComboBox({                           
    name: "state"
});

myComboBox.placeAt(comboBoxDiv);