Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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
连接到img时,javascript中未激发OnClick事件_Javascript_Html_Onclick - Fatal编程技术网

连接到img时,javascript中未激发OnClick事件

连接到img时,javascript中未激发OnClick事件,javascript,html,onclick,Javascript,Html,Onclick,我是JavaScript新手,所以这可能是最基本的 我正在尝试动态创建一个图像,并将其添加到“onclick”的事件侦听器中。我将这个img添加到div中 我创建的img如下所示: function createNewSmiley() { var newSmiley = document.createElement("img"); newSmiley.src = "./smiley.jpg"; newSmiley.alt = "Smiley Image"; new

我是JavaScript新手,所以这可能是最基本的

我正在尝试动态创建一个图像,并将其添加到“onclick”的事件侦听器中。我将这个
img
添加到
div

我创建的img如下所示:

function createNewSmiley()
{
    var newSmiley = document.createElement("img");
    newSmiley.src = "./smiley.jpg";
    newSmiley.alt = "Smiley Image";
    newSmiley.style.width = "64px";
    newSmiley.style.height = "64px";
    return newSmiley;
}
然后我将其添加到div中,如下所示:

function positionNewSmiley(parent, smiley, x, y)
{
    var newSmiley = createNewSmiley();
    newSmiley.style.top = y + "px";
    newSmiley.style.left = x + "px";
    parent.appendChild(newSmiley);
}
这是我的主要职责:

function main(smileyCount)
{
    var myDiv = document.getElementById("myDiv");
    for (var i = 0; i < smileyCount;i++)
    {
        var x = Math.floor((Math.random() * 500));
        var y = Math.floor((Math.random() * 500));
        var smiley = createNewSmiley();
        smiley.onclick = smileyClicked;
        positionNewSmiley(myDiv, smiley, x, y);
    }
}

function smileyClicked(ev) {
    alert("OK");
}
函数main(smileyCount)
{
var myDiv=document.getElementById(“myDiv”);
对于(变量i=0;i
但是,
onclick
事件不会触发

但是,如果我将事件侦听器添加到div中,它会


我做错了什么?

如果在“创建”函数中添加“单击”,它将正常工作

    function createNewSmiley()
{
    var newSmiley = document.createElement("img");
    newSmiley.src = "./smiley.jpg";
    newSmiley.alt = "Smiley Image";
    newSmiley.style.width = "64px";
    newSmiley.style.height = "64px";
    newSmiley.addEventListener("click", smileyClicked);
    return newSmiley;
}

如上所述,当您必须定位传递的
笑脸时,您正在
位置newsmiley
中创建新的
笑脸

var smiley = createNewSmiley();
smiley.onclick = smileyClicked;

positionNewSmiley(myDiv, smiley, x, y);
_________________________^^^^^^
只需在位置功能中使用它:

function positionNewSmiley(parent, smiley, x, y)
{
    smiley.style.top = y + "px";
    smiley.style.left = x + "px";

    parent.appendChild(smiley);
}
希望这有帮助

函数createNewSmiley()
{
var newSmiley=document.createElement(“img”);
newSmiley.src=”http://cfile24.uf.tistory.com/image/163BB51F4BF9DF7431AB10";
newSmiley.alt=“微笑图像”;
newSmiley.style.width=“64px”;
newSmiley.style.height=“64px”;
返回麦利;
}
函数位置newsmiley(父、smiley、x、y)
{
smiley.style.top=y+“px”;
smiley.style.left=x+“px”;
父母。孩子(笑脸);
}
函数main(smileyCount)
{
var myDiv=document.getElementById(“myDiv”);
对于(变量i=0;i

positionNewSmiley()
创建一个新对象(没有单击处理程序),并且只将该对象添加到文档中。我怎么会错过这个?谢谢。:)