Javascript 正在从列表中获取元素。道场

Javascript 正在从列表中获取元素。道场,javascript,web,dojo,Javascript,Web,Dojo,我正在使用dojo dojo.ready(function () var input = dojo.query(".dojo_input"); //i have about 5 elements with ".dojo_input" class input.on("click", function(i) { console.log(input[i]); // function }); }); 所以问题是:我得到了未定义的元

我正在使用dojo

  dojo.ready(function ()
    var input = dojo.query(".dojo_input"); //i have about 5 elements with ".dojo_input" class
    input.on("click", function(i) {
       console.log(input[i]);
       // function 
       });
    });
所以问题是:我得到了未定义的元素,所以我不能对它使用任何函数。如何从列表中获取uniqe元素。
谢谢

在的回调中传递给
的参数是一个事件对象,而不是索引。试着做

input.on("click", function(e) { //event object is conventionally named "e" or "evt"
    console.log(e);
});
IIRC,输入节点本身应该在
e.target
属性中可用

EDIT1:
看看这里的JSFIDLE。

您可以对查询结果使用foreach函数,如下所示

dojo.ready(function (){
    var input = dojo.query(".dojo_input"); //i have about 5 elements with ".dojo_input" class
    input.forEach(function(node, index, arr){ // node is the elment
        console.log("Index"+index);
        dojo.on(node,"click", function() {
            console.log("Clicked!");
            // function 
        })
    });
});

我采用frank提出的代码,并使用
dojo.connect
而不是
dojo.on

dojo.ready(function (){
    var input = dojo.query(".dojo_input"); //i have about 5 elements with ".dojo_input" class
    input.forEach(function(node, index, arr){ // node is the elment
        dojo.connect(node, "onclick", function() {
        console.log("Clicked!" + node);
        // function
            dojo.query(node).after("");
        });
    });
});
要在节点上使用任何函数,我使用
dojo.query(node)

谢谢

回调上的
参数是一个事件,而不是索引。即使你删除了那个论点,这也行不通<代码>索引
在触发回调时始终为4。哎呀!经典的关闭错误。。。需要一个iLife来绑定索引。我尝试使用它,结果是(在第页准备就绪):我在这里创建了一个示例。看一看。它按预期工作。单击“运行”菜单运行示例并单击DIV元素。我不能使用此版本,因为我必须在节点上的
onclick
event
.next()
中使用。所以,我不能使用event。如果您感兴趣,我想做一些提示区域,当您单击输入时显示。当我尝试使用它时,console.log(e)返回我:MouseEvent{dataTransfer:null,toElement:input#fio_dojo.dijitReset.dijitInputInner,…当我尝试使用e.append(“”)时,它说我:uncaughttypeerror:undefined不是一个函数main.html:84(匿名函数)@uniqalien:正如预期的那样,e是一个事件对象,而不是Dom节点。您可以使用e.target获取Dom节点,然后使用它执行适当的Dom方法。您看过它使用dojo.on的fiddle示例吗?它是dojo的新事件处理函数。