Javascript onclick事件未附加

Javascript onclick事件未附加,javascript,html,onclick,Javascript,Html,Onclick,我试图将事件附加到我在Javascript中创建的img标记上,但由于某些原因,它不想附加。在我当前的代码中,我有: var img = document.createElement('img'); img.src = pictures[picIndex][0]; img.alt = 'pic'; img.id = "picture_" + picIndex; img.onclick = function() { alert('click') }; document.getElementById

我试图将事件附加到我在Javascript中创建的img标记上,但由于某些原因,它不想附加。在我当前的代码中,我有:

var img = document.createElement('img');
img.src = pictures[picIndex][0];
img.alt = 'pic';
img.id = "picture_" + picIndex;
img.onclick = function() { alert('click') };
document.getElementById('container').appendChild(img);
但当我加载我的站点时,除了onclick事件之外,我得到了一切,而单击图像什么也不做:

<img src=".." alt="pic" id="picture_3">

同样的事情也发生了。如果我手动编辑img标记以包含onclick函数,该函数执行得很好,但我一辈子都不明白为什么在创建元素时它没有附着。

如果复制并粘贴代码,它看起来是一个输入错误

img.onlclick =
应该是

img.onclick =
这是一把小提琴的演示:

您的问题可能在于排序-如果您的JS位于
之前的页面上(例如在
中),
文档.getElementById
将无法对其进行操作,因为它尚不存在


onclick事件不会在HTML中内联显示,因为图像被实例化为Javascript对象,并且onclick处理程序作为图像对象上的属性存在。我创建了一个更新的Fiddle(),它将image objects onclick属性的值输出到控制台。

您的事件可能不起作用,因为您没有对非IE浏览器使用addEventListener方法。也许试试这个

img.addEventListener('click', function () { /* your function here */ }, false);

/* MS fallback */

(img.attachEvent) ? img.attachEvent('onclick', function () { /* func here */ }) : img.addEventListener('click', function () { /* func here */ }, false);

啊,我没有复制/粘贴,我只是转录错了。我的代码中有onclick我的代码在HTML的末尾,我的控制台中没有错误,所以我假设它能够抓取元素,特别是因为图像显示了所有其他属性,只是没有一次单击,当您创建并附加Javascript元素时,单击不会在HTML中内联显示-它出现在调用document时实例化的Javascript对象上。createElement('img')我创建了一个更新的Fiddle()这会将onclick属性的值输出到控制台,以更好地说明我所说的。好的,这解释了为什么它不会显示在HTML本身中,但当我单击图像时,onclick函数仍然没有执行。这只是我的代码的一小部分,所以也许我应该更深入地研究它,看看我是否能找到问题,只要编辑它。我只是在写问题时打错了字
img.addEventListener('click', function () { /* your function here */ }, false);

/* MS fallback */

(img.attachEvent) ? img.attachEvent('onclick', function () { /* func here */ }) : img.addEventListener('click', function () { /* func here */ }, false);