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

dynamically create a div and combobox, and put combobox in the div using Dojo

我想动态创建一个div和ComboBox,然后把ComboBox放在div中。请参阅下面的代码。当我 运行 代码时,抛出 Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.(…) “TypeError: Failed在 '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); 

你得到这个错误是因为 domConstruct 只处理 DOM 个节点,而你正试图将它与一个对象一起使用,但是,你仍然可以使用它,只需要传递组合框 domNode

domConstruct.place(comboBox.domNode, comboBoxDiv); 

domNode是所有widget都有的一个attach point,它引用widget的根模板。

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

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

看看domConstruct documentation

在 dom 中放置小部件的另一种方法是使用 placeAt 函数。

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

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

myComboBox.placeAt(comboBoxDiv);

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

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

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