domAttr.set(item, 'onclick', 'function(myObject)') 不起作用



我想用一个接受arg中对象的函数将onClick事件设置为我的项。

比如:

item = domConstruct.create('li'); 
domAttr.set(item, 'innerHTML', structure.label);
domAttr.set(item, 'onClick', 'this.myFunction('+structure+')');

问题是:

SyntaxError: missing ] after element list
this.myFunction([object Object])

我知道它适用于以下指令:

item = domConstruct.create('li');
domAttr.set(item, 'innerHTML', structure.label);
domAttr.set(item, 'onClick', this.myFunction(structure));

但这种方式执行myFunction时不需要单击项目。

我只想点击项目(li),然后执行myFunction()中的代码,但函数需要一个参数。

编辑:

非常感谢你的回答,但我已经试过了。它也不起作用。

没有错误,但我的elem"li"没有onClick属性。在HTML控制台中,我看到的是:<li>Lien1<li>

使用此代码:

domAttr.set(item, 'onClick', function(){ 
    this.myFunction(structure);
});

因此,当我点击我的标签"谎言1"时,什么都不会发生。可能是因为没有onClick属性

这与on和lang 的问题相同

我认为这只是一个小小的改变,使它发挥作用。。。

再次感谢您的帮助。

您必须在上使用dojo,然后它才能工作

item = domConstruct.create('li'); on(item,'click',lang.hitch(this,function(){ this.myFunction(structure); }));

你必须使用on和lang,然后它会在点击事件上附加侦听器

查看更多详细信息在这个链接链接

另一种方法类似于

item = domConstruct.create('li'); childitem = domConstruct.create('a',null,item);

现在你有两种选择,要么你这样做on(childitem,'click',lang.hitch(this,function(){ this.myFunction(structure); }));

或者这个

domAttr.set(childitem, 'onClick', 'this.myFunction('+structure+')');

您只是在li标记中设置onClick属性
无需发送参数即可,

domAttr.set(item, 'onClick', "myFunction()");

但发送论点,

domAttr.set(item, 'onClick', function(){myFunction(structure)});

这只是定义函数,所以它不会调用。但请注意,在这种情况下单击li时,structure应该是全局变量。

最新更新