Javascript Dojo-将getAttr与其他Dojo函数一起使用

Javascript Dojo-将getAttr与其他Dojo函数一起使用,javascript,dojo,Javascript,Dojo,我是Dojo新手,似乎找不到关于如何完成我试图完成的任务的适当文档或示例。我正在创建一个决策树样式的文档,它可以动态地向现有元素添加新选项。代码应该在特定DIV的末尾添加一个新节点。为此,它必须找到名为branchID的元素的value属性。然后将该值增加1,并向页面添加新的HTML。在jQuery中,我将使用 $('#btnAddFork').click( function(){ var branchID = $('#branchID').attr( 'value' ); va

我是Dojo新手,似乎找不到关于如何完成我试图完成的任务的适当文档或示例。我正在创建一个决策树样式的文档,它可以动态地向现有元素添加新选项。代码应该在特定DIV的末尾添加一个新节点。为此,它必须找到名为branchID的元素的value属性。然后将该值增加1,并向页面添加新的HTML。在jQuery中,我将使用

$('#btnAddFork').click( function(){
    var branchID = $('#branchID').attr( 'value' );
    var newNodeHTML = "<div class='node'>new node #" + (++n) + "</div>';
    $('div#NodeDIV').append( newForkHTML );
});
$('btnAddFork')。单击(函数(){
var branchID=$('#branchID').attr('value');
var newNodeHTML=“new node#”+(++n)+”;
$('div#NodeDIV').append(newForkHTML);
});
在需求变更迫使我使用另一个框架之前,我创建了一个概念验证代码

require(["dojo/dom-construct", "dojo/dom", "dojo/dom-attr", "dojo/on", "dojo/domReady!"],
function(domConstruct, dom, on){
  on(dom.byId("btnAddFork"), "click", function(){
    var n = domAttr.get("branchID", "value");
    domConstruct.place("<div class='node'>new node #" + (++n) + "</div>", "NodeDIV");
  });
}); 
require([“dojo/dom构造”、“dojo/dom”、“dojo/dom属性”、“dojo/on”、“dojo/domReady!”),
函数(domConstruct、dom、on){
在(dom.byId(“btnAddFork”),“click”,function()上{
var n=domatr.get(“branchID”,“value”);
domConstruct.place(“新节点”#“+(++n)+”,“NodeDIV”);
});
}); 

Dojo代码在我尝试为n赋值的行中消失。错误消息是“TypeError:object不是函数”“。错误消息没有为我指明找到解决方案的正确方向。我确信这是我尝试使用domAttr.get函数获取值的方式,但我似乎找不到让它以我期望的方式工作的方式。Dojo如何处理这样的事情?如果有人能够指出解决方案需要如何/为什么以这种方式编写的文档,那将非常有帮助。

我能够找到这个问题的解决方案,但我不会删除这个问题,而是提供我发现的细节,这样其他人就不会犯真正的初学者错误。问题是我在require语句之后编写函数定义的方式。函数定义要求指定require中的每个项(domReady!除外,因为它是加载程序的辅助函数)。在阅读文档时,我错过了这个小细节。下面的代码完全按照预期工作

require(["dojo/dom-construct", "dojo/dom", "dojo/on", "dojo/dom-attr", "dojo/domReady!"],
function(domConstruct, dom, on, domAttr){
  on(dom.byId("btnAddFork"), "click", function(){
    var n = domAttr.get("branchID", "value");
    domConstruct.place("<div class='node'>new node #" + (++n) + "</div>", "NodeDIV"); 
    domAttr.set("branchID", "value", n);
  });
});
require([“dojo/dom构造”、“dojo/dom”、“dojo/on”、“dojo/dom属性”、“dojo/domReady!”),
函数(domConstruct、dom、on、domAttr){
在(dom.byId(“btnAddFork”),“click”,function()上{
var n=domatr.get(“branchID”,“value”);
domConstruct.place(“新节点”#“+(++n)+”,“NodeDIV”);
domAttr.set(“branchID”,“value”,n);
});
});
注意,在工作代码中,我将domAttr添加到函数定义中。当我第四次或第五次阅读了domAttr的所有文档后,我意识到我没有将它添加到函数定义中。我读过的Dojo文档并不完全清楚如何构建require语句以及如何使用它,所以我在开始的几次中就错过了这一点