gpt4 book ai didi

dojo - 我可以从动态创建的 dijit 按钮 onClick 传递参数吗?

转载 作者:行者123 更新时间:2023-12-04 23:30:17 25 4
gpt4 key购买 nike

我想知道,我可以从动态创建的 dijit 按钮传递参数吗?

function testcallfromDynamicButton (value) {
alert(value);
}

var thisButton = new dijit.form.Button({
label : thelineindex ,
id : "I_del_butt"+thelineindex,
name : "I_del_butt"+thelineindex,
onClick : testcallfromDynamicButton('test')
}).placeAt( thetabletd1 ) ;

看来,这行不通,我试着改成这样。有用 !!
function testcallfromDynamicButton () {
alert('test');
}

var thisButton = new dijit.form.Button({
label : thelineindex ,
id : "I_del_butt"+thelineindex,
name : "I_del_butt"+thelineindex,
onClick : testcallfromDynamicButton
}).placeAt( thetabletd1 ) ;

问题是,我想让函数知道,哪个按钮被点击了(因为所有按钮都是动态创建的,按钮 id 是由 indexnumber 生成的),所以我需要将按钮本身的 id 传递给函数。但是通过 onClick 调用传递参数在 Dijit 中似乎不起作用。我怎样才能让它工作?

最佳答案

不用担心,这是一个非常常见的 Javascript 错误——事实上,它与 Dojo 无关。

onClick 需要一个函数对象,但您实际上是在执行 testcallfromDynamicButton('test')并将此函数调用的结果分配给它。例如,如果 testcallfromDynamicButton返回“colacat”,onClick 事件将被赋予该字符串!这显然不是你想要的。

所以我们需要确保onClick给出了一个函数对象,就像你在第二个例子中所做的那样。但是我们也想在函数执行时给它一个参数。这样做的方法是将您的函数调用包装在一个匿名函数中,如下所示:

var thisButton = new dijit.form.Button({
label : thelineindex ,
id : "I_del_butt"+thelineindex,
name : "I_del_butt"+thelineindex,
onClick : function() {
testcallfromDynamicButton('test');
}
}).placeAt( thetabletd1 ) ;

这样, onClick获取一个函数对象,然后 testcallfromDynamicButton用参数执行。

关于dojo - 我可以从动态创建的 dijit 按钮 onClick 传递参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6092434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com