Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将onClick与动态生成的div与dojo相关联?_Javascript_Html_Dojo - Fatal编程技术网

Javascript 如何将onClick与动态生成的div与dojo相关联?

Javascript 如何将onClick与动态生成的div与dojo相关联?,javascript,html,dojo,Javascript,Html,Dojo,我正在使用dojo 1.9.2,并试图在我动态创建的一段HTML代码上附加onClick函数,如下所示: clickableDiv = "<div data-dojo-attach-point=\"testBtn\">Click Me!</div>"; self.racks.innerHTML = clickableDiv; 由于某些原因,这不仅不起作用,当我刷新页面时,“你点击了它!”警报会在我没有点击任何东西的情况下弹出 我必须使用这个dojo版本,这是需求的一部分

我正在使用dojo 1.9.2,并试图在我动态创建的一段HTML代码上附加onClick函数,如下所示:

clickableDiv = "<div data-dojo-attach-point=\"testBtn\">Click Me!</div>";
self.racks.innerHTML = clickableDiv;
由于某些原因,这不仅不起作用,当我刷新页面时,“你点击了它!”警报会在我没有点击任何东西的情况下弹出

我必须使用这个dojo版本,这是需求的一部分。。。
关于如何进行此操作,有什么想法或建议吗?

好吧,dojo是javascript的一部分,因此您可能可以使用一些javascript函数,例如:

clickableDiv = "<div id=\"testBtn\">Click Me!</div>";
self.racks.innerHTML = clickableDiv;
document.getElementById('testBtn').onclick=function(){alert("You Clicked It!");};
clickableDiv=“单击我!”;
self.racks.innerHTML=clickableDiv;
document.getElementById('testBtn').onclick=function(){alert(“您单击了它!”);};

问题中提到的代码是正确的,只有一个错误。“onclick”事件需要一个处理函数,而不是直接使用代码。因此,用一个函数将该警报语句括起来

connect(this.testBtn, "onclick", function(){alert("You Clicked It!")});
function abcd() {
 alert('You clicked It');
}
connect(this.testBtn, "onclick", "abcd");//same as connect(this.testBtn, "onclick", abcd);
或者,其他地方的单独函数可以通过传递函数或函数名在此处链接句柄

connect(this.testBtn, "onclick", function(){alert("You Clicked It!")});
function abcd() {
 alert('You clicked It');
}
connect(this.testBtn, "onclick", "abcd");//same as connect(this.testBtn, "onclick", abcd);

在提供事件处理程序(或通常的回调)时,必须提供函数作为引用。使用时:

connect(this.testBtn,“onclick”,警报(“你点击了它!”);
实际上,您是说要将
onClick
事件处理程序连接到该
alert()
返回值。实际上,您想要的与其他答案类似,这些答案已经通过将其包装在通过引用传递的函数中进行了解释:

connect(this.testBtn,“onclick”,function()){
警报(“您单击了它!”)
});
但是,由于您使用的是通常在小部件中使用的
数据dojo附加点
,因此也可以用类似的方式定义事件处理程序,例如:

clickableDiv = "<div id=\"testBtn\">Click Me!</div>";
self.racks.innerHTML = clickableDiv;
document.getElementById('testBtn').onclick=function(){alert("You Clicked It!");};
clickableDiv=“单击我!”;
然后,您可以在小部件中编写一个名为
myClickHandler
的函数来显示警报,例如:

clickableDiv = "<div id=\"testBtn\">Click Me!</div>";
self.racks.innerHTML = clickableDiv;
document.getElementById('testBtn').onclick=function(){alert("You Clicked It!");};
myClickHandler:function(){
警告(“你点击了它!”);
}

他正在使用dojo 1.9.2。connect已弃用,他应在上使用:

on(this.testBtn, "click", function(){
    alert("You Clicked It!")
});
您的数据dojo附加点不会在动态放置的HTML中获取。您可以将其放在自定义小部件模板中,以提供对节点/小部件的实际引用。如果模板中确实包含该元素,则只需在元素上使用该属性即可:

data-dojo-attach-event="onClick: someFunction"

我的项目的设置方式是,基本页面(HTML)与dojo文件没有任何关联,而dojo文件主动修改基本页面。。。如果我使用基本的javascript代码,我还能像“alert”一样调用不是javascript一部分的自制函数吗?我会选择你的解决方案,因为我最终使用了这个解决方案,但是其他人,非常感谢!谢谢大家的帮助,所有的解决方案都非常有效!这真的帮了我很大的忙。现在我不知道选择什么答案作为解决方案,因为它们都同样有用。。。