我不知道这是允许的,甚至是不可能的。是否可以使用onclick事件创建div元素,以便在单击div区域中的任何位置时,该事件将会运行。
例如 JAVASCRIPT:
var divTag = document.createElement("div");
divTag.id="new-ID";
var onClickCommand = "printWorking()" //printworking is another method that simply print "I'm working" to the console
divTag.onclick = onClickCommand;
console.log("onclick command added");
console.log(divTag.onclick);
parentDiv.appendChild(divTag); //This simply adds the div tag to the page.
HTML生成:
<!--<div id="new-ID">-->
whatever content I decide to add to the divTag.innerHTML
我注意到没有onclick命令如何进入生成的div。这是因为它不被允许吗?
那么2个问题。
1:是否可以向div添加onclick并在单击div的任何区域时发生。 2:如果是,那么为什么onclick方法不会进入我的div。
多奇怪:
divTag.setAttribute("onclick", "printWorking()");
以上作品完美无瑕。
以下所有内容都不会,并且不会将onclick传递给div。
divTag.onclick=printWorking;
divTag.onclick="printWorking";
divTag.onclick="printWorking()";
还尝试了其他多种变体。
答案 0 :(得分:22)
是否可以向div添加onclick并在单击div的任何区域时发生。
是的......虽然应该谨慎行事。确保有一些允许键盘访问的机制。 Build on things that work
如果是,那么为什么onclick方法不会进入我的div。
您正在指定一个需要函数的字符串。
divTag.onclick = printWorking;
虽然有更好的方法可以分配事件处理程序,但是旧版本的Internet Explorer有很大的不同,您应该使用库来抽象它。有很多very small event libraries,每个主要库(例如YUI或jQuery)都有事件处理功能。
答案 1 :(得分:2)
像这样分配onclick:
divTag.onclick = printWorking;
onclick属性在分配时不会占用字符串。相反,它需要一个函数引用(在这种情况下,printWorking
)
在HTML中分配时,onclick属性可以是字符串,例如<div onclick="func()"></div>
,但通常不建议这样做。
答案 2 :(得分:2)
Everythings运作良好。你不能使用divtag.onclick,becease“onclick”属性不存在。您需要首先使用.setAttribute()创建此属性。看看这个 http://reference.sitepoint.com/javascript/Element/setAttribute。在开始提供“ - ”之前,您应该首先阅读文档。