我正在尝试向节点添加一个dijit按钮但是它失败了
错误:无法在“节点”上执行“appendChild”:新子节点 element为null。
代码是
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或no修饰符找到on click方法。在任何情况下,文件说由于记忆泄漏而不是这样做的事情
有没有人对可能出错的地方有任何指示。
非常感谢您的帮助
答案 0 :(得分:3)
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);
})
答案 1 :(得分:1)
不需要domConstruct命令,new Button的第二个参数是放置按钮的元素的位置。
var btnDelete = new Button({ label: "Delete" }, <idOfContainerElement")