将一个onclick事件添加到div

时间:2011-08-02 09:36:06

标签: javascript css html onclick

我不知道这是允许的,甚至是不可能的。是否可以使用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()";

还尝试了其他多种变体。

3 个答案:

答案 0 :(得分:22)

  

是否可以向div添加onclick并在单击div的任何区域时发生。

是的......虽然应该谨慎行事。确保有一些允许键盘访问的机制。 Build on things that work

  

如果是,那么为什么onclick方法不会进入我的div。

您正在指定一个需要函数的字符串。

divTag.onclick = printWorking;

虽然有更好的方法可以分配事件处理程序,但是旧版本的Internet Explorer有很大的不同,您应该使用库来抽象它。有很多very small event libraries,每个主要库(例如YUIjQuery)都有事件处理功能。

答案 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。在开始提供“ - ”之前,您应该首先阅读文档。