Dojo domAttr.set(项,';onclick';,';函数(myObject)';)不';行不通

Dojo domAttr.set(项,';onclick';,';函数(myObject)';)不';行不通,dojo,Dojo,我想用一个函数将onClick事件设置为我的项目,该函数在arg中获取一个对象 就像这样: item = domConstruct.create('li'); domAttr.set(item, 'innerHTML', structure.label); domAttr.set(item, 'onClick', 'this.myFunction('+structure+')'); 问题是: SyntaxError: missing ] after element list this.myF

我想用一个函数将
onClick
事件设置为我的项目,该函数在arg中获取一个对象

就像这样:

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()
中执行代码,但该函数需要一个参数

编辑:

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

没有错误,但我的元素'li'没有onClick属性。 在HTML控制台中,我看到的是:
  • Lien1
  • 使用此代码:

    domAttr.set(item, 'onClick', function(){ 
        this.myFunction(structure);
    });
    
    所以,当我点击我的标签“Lien1”时,什么也没发生。可能是因为没有onClick属性=/

    安和朗也有同样的问题

    我认为这只是一个小小的改变,使它的工作


    再次感谢您的帮助。

    您只需在
    li
    标记中设置
    onClick
    属性。
    不发争论就可以了

    domAttr.set(item, 'onClick', "myFunction()");
    
    但是发出的论点

    domAttr.set(item, 'onClick', function(){myFunction(structure)});
    
    这只是定义函数,所以它不会调用。
    但请注意,在本例中,单击
    li
    时,结构应为全局变量。

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

    item=domConstruct.create('li');
    在(项上,'click',lang.hitch(此,函数(){
    这就是我的功能(结构);
    }));

    您必须使用on和lang,然后它将在click事件上附加侦听器

    请参阅此链接的更多详细信息

    另一种方法是这样的

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

    现在你有两个选择要么这样做
    on(childitem,'click',lang.hitch(this,function(){
    这就是我的功能(结构);
    }));

    还是这个


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

    myFunction是否必须与“this”关联,或者它是否可以是自己的函数Yeah myFunction的可能副本必须与此关联。“我很确定。”弗罗德:不,这不是复制品,我已经试过了,但没用!实际上,它与按钮或小部件的属性onclick:function(){}一起工作。。。类似于这样,但我正在尝试在li标记(它是一个节点)中设置onclick属性。@Renaud,在li标记上设置onclick应该不会有问题:您能够在该小提琴中重现您的问题吗?请记住在处理DOM元素属性时使用所有小写的“onclick”。我尝试过,但它不起作用。domAttr.set(item,'onclick',function(){this.myFunction(structure);})也有同样的问题;-->控制台中的我的li标记:
  • link1
  • 缺少onclick属性:/ok,然后您可以按照标准做法将anchortag附加到列表项中,我正在编辑我的答案,请查看另一个方法部分我使用domAttr.set(项,'onclick','this.myFunction('+structure+'))再次尝试过;(没有'a'元素)现在,在我的控制台中,我得到了这样的结果:
  • Link1
  • 似乎更好,但当我单击'Link1'时,错误是:SyntaxError:missing]在元素列表后面列出这个.myFunction([object object]),因为你正在连接你的结构对象给[object的字符串因为这是tostring函数的返回。您必须像这样调用domAttr.set(项,'click',lang.hitch(this,function(){this.myFunction(structure);}));如果您能够创建JSFIDLE,那么修复它就会容易得多