javascript - JS中如何将事件分配给变量

标签 javascript

您好,我有一个关于 JS 中事件的非常基本的问题。

我可以做这样的事情:

var myobj = { };
document.getElementById("myid").onmousemove = function (e) {
  myobj.e = e;
}

...

// called from function which will occure after onmousemove guaranteed
document.getElementById("info").innerHTML = myobj.e.type;

我的游戏需要这个。我想保存事件数据并稍后在游戏循环的更新函数中调度它。

好的。这是 jsfiddle。

<p id="info"></p><canvas id="can" width="400px" height="400px" style="border: 2px solid red"></canvas>

var my = { };
document.getElementById("can").onclick = function(e, custom) {
    my.e = e;
}
document.getElementById("can").onmouseover = function(e, custom) {
    my.e = e;
}
document.getElementById("can").onmouseout = function(e, custom) {
    my.e = e;
}
document.getElementById("can").oncontextmenu = function(e, custom) {
    my.e = e;
}
document.getElementById("info").innerHTML = my.e.type;

http://jsfiddle.net/cMPSS/3/

它不起作用。

最佳答案

是的,你可以这样做

var myEvents = [];
var myDiv = document.getElementById("myDiv");
var infoDiv = document.getElementById("info");

function logEvent(e)
{
    e.preventDefault(); // prevent default behaviour if needed
    myEvents.push(e); // Store event info
}

myDiv.onmousemove = myDiv.onmousedown = myDiv.onmouseup = logEvent; 

// Set a timer for looping through the events
gameTimer = setInterval(function() {
    // Loop through events
    while (myEvents.length>0)
    {
        ev = myEvents.shift();
        // Display event info
        infoDiv.innerHTML = ev.type + " " + infoDiv.innerHTML; 
    }
}, 100)​
​

DEMO

关于javascript - JS中如何将事件分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13040025/

相关文章:

javascript - 为什么在将 next.js 与环境变量一起使用时我的 API key 可见?

JavaScript 表单验证 : understanding function call

javascript - 数组的 Document.getElementByName

javascript - 输入输入时检查 INSERT 模式是否打开

javascript - 页面仅在刷新后加载 CSS 和 JavaScript

javascript - Webpack 未构建 SCSS

使用数组的 Javascript + jQuery 游戏(数字和图像)

Javascript:让函数等待查询完成

javascript - 循环遍历数组并删除特定类型的元素 d3.js

javascript - 仅使用一个按钮的 AJAX 脚本