Dojo:动态添加按钮

Dojo: adding a button dynamically

本文关键字:按钮 添加 动态 Dojo      更新时间:2023-09-26

我试图添加一个dijit按钮到一个节点,但它是失败的

错误:在'Node'上执行'appendChild'失败:新的子节点元素为空

代码

var output = dom.byId(this.baseClass + 'displayValues');
var btnDelete = new Button({ label: "Delete" }, "btnDelete");
btnDelete.startup();
domConstruct.place(btnDelete, output);

输出元素肯定是有效的,我可以添加一堆span标签,如果我想用相同类型的代码

我也可以用这种代码添加按钮

var node = domConstruct.toDom('<li>' + name + '|' + value + '<button type='"button'" OnClick='"this._removeItem(''' + name + ''');'">X</button></li>');

但在这种情况下,它找不到带有this, parent或无修饰符的on click方法。不管怎样,文档说不要这样做因为存在内存泄漏

有没有人有任何指针可能会出错。

非常感谢您的帮助

Button构造函数的第二个参数可以是html元素的ID,也可以是DomNode对象。

这是我如何使用第二个选项,动态创建节点。

define(["dojo", "dojo/dom", "dojo/dom-style", "dojo/dom-class", "dojo/dom-construct", "dojo/query", 
function(dojo, dom, domStyle, domClass, domConstruct, query) {
    var buttons = dom.byId('my-buttons');
    var buttonNode = domConstruct.toDom('<button type="button" class="button delete-button"></button>')
    buttons.appendChild(buttonNode)
    var button = new Button({label: "Delete" }, buttonNode);
})  

不需要domConstruct命令,new Button的第二个参数是放置按钮的元素的位置。

var btnDelete = new Button({ label: "Delete" }, <idOfContainerElement")

jsfiddle.net/N2Yjt/1