【问题标题】:onmousemove Event is not able to pass event-data in JavaScript Exampleonmousemove 事件无法在 JavaScript 示例中传递事件数据
【发布时间】:2022-02-07 16:52:23
【问题描述】:

在此示例中,当我在 div 内移动鼠标时,我想显示鼠标当前位置的(x 和 y 坐标),但它显示错误。为什么?

function fifa(ev){
  document.getElementById('div1').style.background = "cornsilk";
  document.getElementById('div1').innerHTML = (ev.clientX + " "  + ev.clientY);
}
div {
  height:200px; 
  width:200px; 
  border:2px solid #000; 
  background:green; 
  display:inline-block; 
  margin:20px;
}
<div id="div1" onmousemove="fifa(ev)">onmousemove</div>

【问题讨论】:

标签: javascript html dom-events


【解决方案1】:

您的错误是您试图传递未知变量ev - 它不存在。你可以像他们一样传递(事件)at the site you used:myFunction(event)

我强烈建议更改为 eventListener 并在 w3schools 上使用 MDN

const div1 = document.getElementById('div1'); // cache the element
// only change colour once, using class
div1.addEventListener("mouseenter", function(e) {
  this.classList.add("silk")
})
div1.addEventListener("mouseleave", function(e) {
  this.classList.remove("silk")
})

div1.addEventListener("mousemove", function(e) {
  this.innerHTML = (e.clientX + " "  + e.clientY);
})
div {
  height:200px; 
  width:200px; 
  border:2px solid #000; 
  background:green; 
  display:inline-block; 
  margin:20px;
}
div.silk {background:cornsilk; }
<div id="div1">onmousemove</div>

供您参考,但请使用我的版本,这是您的代码的固定版本。

注意我将事件传递给函数,它被作为 ev 拾取 - 不推荐,因为它已经在函数中可用

function fifa(ev){ // event passed as ev
  ev.target.style.background = "cornsilk"; // the div is the event target
  ev.target.innerHTML = (ev.clientX + " "  + ev.clientY); 
}
div {
  height:200px; 
  width:200px; 
  border:2px solid #000; 
  background:green; 
  display:inline-block; 
  margin:20px;
}
<div id="div1" onmousemove="fifa(event)">onmousemove</div>

【讨论】:

  • 另外,我的例子应该可以工作。看到这个:w3schools.com/jsref/tryit.asp?filename=tryjsref_onmousemove
  • 谢谢,但是请看我上面给你的链接。如果代码在那里运行,我在这里发布的代码有什么问题? :(
  • 不,我更改了我的代码(更新了有问题的代码),但仍然出现错误。请检查。
  • Pl,您能否建议,我应该如何进行更改才能使其正常工作?
【解决方案2】:

在您的 HTML 中,只需将“ev”更改为事件即可。

   <div id="div1" onmousemove="fifa(event)">onmousemove</div>

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 2011-03-30
    • 1970-01-01
    • 2012-03-30
    • 2017-03-04
    • 1970-01-01
    相关资源
    最近更新 更多