Dojo:动态添加按钮

时间:2014-03-24 15:17:53

标签: javascript dojo

我正在尝试向节点添加一个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方法。在任何情况下,文件说由于记忆泄漏而不是这样做的事情

有没有人对可能出错的地方有任何指示。

非常感谢您的帮助

2 个答案:

答案 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")

jsfiddle.net/N2Yjt/1