Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
事件的JavaScript引用,由addEventListener()声明_Javascript_Events_Dom - Fatal编程技术网

事件的JavaScript引用,由addEventListener()声明

事件的JavaScript引用,由addEventListener()声明,javascript,events,dom,Javascript,Events,Dom,我正在尝试实现一个Web应用程序,它应该允许您在像素网格上绘制形状。为此,我需要向网格的每个表元素添加几个事件侦听器。 这就是我目前所做的: td.addEventListener("click", setpixel); td.addEventListener("mousedown", function () { mousedown = true; }) td.addEventListener("mouseup", function () { mousedown = false;

我正在尝试实现一个Web应用程序,它应该允许您在像素网格上绘制形状。为此,我需要向网格的每个表元素添加几个事件侦听器。 这就是我目前所做的:

td.addEventListener("click", setpixel);
td.addEventListener("mousedown", function () {
    mousedown = true;
})
td.addEventListener("mouseup", function () {
    mousedown = false;
})
td.addEventListener("mousemove", function () {
    if (mousedown) {
        setpixel(?);
    }
});
setPixel函数需要一个作为参数传递的事件:

function setpixel(event) {
    var oldColor = this.style.backgroundColor;
    var currentColor=document.getElementById("current-color").style.backgroundColor;
    if (brushwidth > 1 && brushwidth < 4) {
        brushpixel(this.id, offset, currentColor);
    }
    else if (brushwidth == 4) {
        document.body.style.cursor = "url('https://www.wired.com/wp-content/uploads/images_blogs/design/2013/04/Susan-Kare-fill-icon-660x660.jpg')";
        floodfill(this.id, currentColor, oldColor);
        preview();
    }
    else {
        this.style.backgroundColor = currentColor;
    }
    preview();
}
否则它就不能正常工作。 从何处获取引用的事件


链接线程在这里对我不起作用,不确定原因,但我已经尝试过了。

将事件添加到侦听函数参数中

td.addEventListener("mousemove", function (e) {
    if (mousedown) {
        setpixel(e);
    }
});

将click事件注册到表中,并创建一个函数将专门处理的条件。使用e.target确定实际单击了哪个。请在上阅读这篇文章。在编辑之前开始此答案,因此不知道新添加的内容

演示 //参比片 var T=document.querySelector'T'; /*在T上注册click事件 ||setPixel是回调函数 */ T.addEventListenerclick,setPixel; 函数集像素{ /*e.target是单击的元素 ||如果单击的元素是。。。 */ var tgt=e.target; 如果tgt.tagName==TD{ /*…如果td没有红色指示灯 ||背景,然后把它变成红色 */ 如果tgt.style.background!=“红色”{ e、 target.style.background='red'; }否则{ /*否则就把它变成黑色*/ e、 target.style.background='black'; } } } T{ 宽度:90% } 桌子 运输署{ 边框:2个实心番茄; 光标:指针; 背景:黑色; }
我已经试过了。setpixel函数将抛出:在计算传递的事件时,undefined不是一个对象Post您的setpixel函数也是如此,那么您在setpixel函数中尝试使用此函数访问什么?此引用调用函数setpixel的DOM元素。您在setpixel中计算事件的位置没有引用导致我相信这不是错误所在