Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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-处理鼠标拖动事件_Javascript_Addeventlistener - Fatal编程技术网

Javascript-处理鼠标拖动事件

Javascript-处理鼠标拖动事件,javascript,addeventlistener,Javascript,Addeventlistener,我是JavaScript新手,我创建了一个着色网格 应该可以通过拖动鼠标来绘制图像,但事实并非如此。无论何时单击单元格,都会开始拖动。应激活鼠标移动到的所有单元格,并使用选定的颜色着色 释放鼠标后,拖动停止,鼠标移动不再激活单元格。 这是我的代码,但我只能在单击鼠标时执行: var td = document.querySelectorAll('#my-table td'); td.forEach(e => e.addEventListener("click", function() {

我是JavaScript新手,我创建了一个着色网格

应该可以通过拖动鼠标来绘制图像,但事实并非如此。无论何时单击单元格,都会开始拖动。应激活鼠标移动到的所有单元格,并使用选定的颜色着色

释放鼠标后,拖动停止,鼠标移动不再激活单元格。

这是我的代码,但我只能在单击鼠标时执行:

var td = document.querySelectorAll('#my-table td');
td.forEach(e => e.addEventListener("click", function() {
    if(this.style.backgroundColor =="" || this.style.backgroundColor =="white"){
    this.style.backgroundColor = selectedColor;
    }
    else{
        this.style.backgroundColor = "white";
    }
}));

尝试使用mousemove和mouseup/mousedown事件在Javascript中检查鼠标的状态

所以首先检查网格中的mousedown事件,然后检查mousemove

当发生mouseup事件时,您可以检查网格并执行操作

参考文献 我解决了它

var isClicked = false;

window.addEventListener('mousedown', e => {

  isClicked = true;
});


window.addEventListener('mouseup', e => {
  if (isClicked === true) {
    isClicked = false;
  }
});
//do{
td.forEach(e => e.addEventListener("mousemove", function() {
    // Here, `this` refers to the element the event was hooked on
if (isClicked === true) {
    this.style.backgroundColor = selectedColor;
}

}));
td.forEach(e => e.addEventListener("click", function() {
    // Here, `this` refers to the element the event was hooked on

    if(this.style.backgroundColor =="" || this.style.backgroundColor =="white"){
    this.style.backgroundColor = selectedColor;
    }
    else{
        this.style.backgroundColor = "white";
    }

}));

请向我们展示您失败的尝试。也就是说,你肯定不是从最简单的任务开始学习JS:-)我尝试使用mousedown和mouseup事件,但我不知道如何告诉他为所选单元格着色。因为this.style.backgroundColor=selectedColor;是老鼠唯一的牢房。如何保存所有选定的表格单元格以对其进行着色?每当单元格鼠标悬停时,您可以立即为每个单元格应用颜色样式。这就是我们的想法。所以试着为每个单元格附加addEventListener(“mouseover”),函数(事件)并执行操作。你们可以在这里找到类似的示例。