【问题标题】:Can't set new IMG event attribute in Javascript [duplicate]无法在 Javascript 中设置新的 IMG 事件属性 [重复]
【发布时间】:2016-10-16 21:24:46
【问题描述】:

我是 JavaScript 新手,但对 Java/C++ 有一定的经验。因此,我尝试使用以下代码在我正在创建的新 IMG 元素上设置一些简单的事件属性:

var square = document.createElement("IMG");
square.src = "Square_Empty.png";
square.alt = "Oops!";
square.style = "height:100px;width:100px;position:\
absolute;top:14.5px;left:83.1px;";
square.onmouseover = "this.src='Square_Red.png'";
square.onmouseout = "this.src='Square_Empty.png'";
document.body.appendChild(square);

除了onmouseoveronmouseout 属性的分配外,一切似乎都运行良好。根据调试器(Firefox),这些属性没有被分配,但其他的被分配了,我不知道为什么。

【问题讨论】:

    标签: javascript html dom-events


    【解决方案1】:

    最好使用addEventListener()

    square.addEventListener("mouseover", function(){ this.src='Square_Red.png' });
    square.addEventListener("mouseout", function(){ this.src='Square_Empty.png' });
    

    或者你可以简单地添加匿名函数function()

    square.onmouseover = function(){ this.src='Square_Red.png'; }
    square.onmouseout = function(){ this.src='Square_Empty.png'; }
    

    希望这会有所帮助。

    【讨论】:

    • 事件监听器的建议奏效了——谢谢!不过,我仍然很好奇,为什么我试图做的事情没有奏效。似乎我应该能够以与其他字符串相同的方式将这些字符串分配给 img 属性?
    • 不客气,很高兴我能帮上忙……您不能将字符串作为事件传递,而应该传递函数..
    • 好的,但是如果我直接在 html 中设置它,如果我只是将字符串“this.src='Square_Red.png'”分配给属性,它就可以工作。也许那里的工作方式不同?
    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-07-20
    • 2021-06-14
    • 2019-07-19
    相关资源
    最近更新 更多