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

时间:2014-10-17 15:40:27

标签: 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.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控制台中,我看到的是:<立GT; Lien1< /立GT;

使用此代码:

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

所以,当我点击我的标签&LAN1'时,没有任何反应。可能是因为没有onClick属性。 = /

与on和lang相同的问题

我认为改变它只是一件小事让它发挥作用......

再次感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

你必须使用dojo然后才能工作

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

你必须使用on和lang然后它会在click事件上附加监听器

点击此链接link

了解更多详情

另一种方法就是这样

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+')');

答案 1 :(得分:0)

您只需在onClick标记中设置li属性 没有发送参数就可以了,

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

但发送论据,

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

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