我已经堆了一天了。请帮忙!我发布了我想在底部做的事情。
function setupPuzzle() {
allCells = document.querySelectorAll("table#hitoriGrid td");
for (var i = 0; i < allCells.length; i++) {
allCells[i].style.backgroundColor = "white";
allCells[i].style.color = "black";
allCells[i].style.borderRadius = "0";
allCells[i].addEventListener("mousedown",
function(evt) {
if (evt.shiftKey) {
allCells[i].style.backgroundColor = "white";
allCells[i].style.color = "black";
allCells[i].style.borderRadius = "0";
}
else if (evt.altKey) {
allCells[i].style.backgroundColor = "black";
allCells[i].style.color = "white";
allCells[i].style.borderRadius = "0";
}
else {
allCells[i].style.backgroundColor = "rgb(101, 101, 101)";
allCells[i].style.color = "white";
allCells[i].style.borderRadius = "50%";
}
});
evt.preventDefault();
allCells[i].addEventListener("mouseover",
function(evt) {
if(evt.shiftKey) {
allCells[i].style.cursor = "url(jpf_eraser.png), alias";
} else if (evt.altKey) {
allCells[i].style.cursor = "url(jpf_block.png), cell";
} else {
allCells[i].style.cursor = "url(jpf_circle.png), pointer"
}
});
allCells[i].addEventListener("mouseup", checkSolution);
}
}
在for循环中,为allCells集合中的每个单元格添加一个mousedown事件侦听器,根据用户是否按下Shift键,Alt键或无键来更改单元格的外观。将以下命令添加到mousedown事件的匿名函数中:
如果用户按Shift键,则将背景颜色更改为白色,将字体颜色更改为黑色,将边框半径更改为0。 如果用户按下Alt键,将背景颜色更改为黑色,将字体颜色更改为白色,将边框半径更改为0。 否则,将背景颜色更改为rgb(101,101,101),将字体颜色更改为白色,将边框半径更改为50%。 为避免无意中选择表格单元格的文本,请包含一个命令以防止浏览器响应mousedown事件的默认操作。 Rebecca需要一个不同的鼠标光标,具体取决于当鼠标指针在拼图单元格上方移动时,用户是按Shift键,Alt键还是无键。在for循环中,为每个运行匿名函数
的拼图单元添加一个mouseover事件侦听器如果用户按下Shift键,则将光标更改为jpf_eraser.png图像或名为“alias”的通用光标。 如果用户按下Alt键,则将光标更改为jpf_block.png图像或名为“cell”的通用光标。 否则,将光标更改为jpf_circle.png图像或名为“pointer”的通用游标。 最后,在for循环中,添加一个事件监听器来运行checkSolution()函数以响应mouseup事件,以测试用户是否已经解决了这个难题