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控制台中,我看到的是: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,那么修复它就会容易得多