为了账号安全,请及时绑定邮箱和手机立即绑定

使用 onmouseover 更改正方形的颜色

使用 onmouseover 更改正方形的颜色

慕码人8056858 2021-12-02 16:59:07
我开始学习 js,现在我列出了练习清单。在此列表中,我需要制作一个按钮,每次单击时,屏幕上都会出现一个新的红色方块,并且我总是将鼠标移到任何方块上,颜色必须更改为任意方块。但我只能改变第一个方块的颜色。为什么会发生这种情况?我该如何解决这个问题?let btn = document.querySelector("#btn");btn.onclick = function createSquare() {  let divSquare = document.createElement("div");  divSquare.setAttribute("class", "square");  divSquare.setAttribute("onmouseover", "mouseOver()");  let container = document.querySelector("#container");  container.appendChild(divSquare);};function mouseOver() {  function getRandomColor() {    let letters = "0123456789ABCDEF";    let color = "#";    for (let i = 0; i < 6; i++) {    color += letters[Math.floor(Math.random() * 16)];    }  return color;  }let newColor = getRandomColor();        return document.querySelector('.square').style.backgroundColor = newColor;}#container {  display: flex;  width: 100%;  height: 100%;  flex-wrap: wrap;}.square {  width: 100px;  height: 100px;  background-color: red;  margin: 1px;}<button id="btn">Click here for create a new square</button><div id="container"></div>我需要使用JS来解决这个问题
查看完整描述

2 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

将事件参数 (e) 添加到 mouseOver func 并使用 e.target 获取框以设置背景


function getRandomColor() {

    let letters = "0123456789ABCDEF";

    let color = "#";

    for (let i = 0; i < 6; i++) {

        color += letters[Math.floor(Math.random() * 16)];

    }

    return color;

}


function mouseOver(e) {

  let newColor = getRandomColor();

  return e.target.style.backgroundColor = newColor;

}


查看完整回答
反对 回复 2021-12-02
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

我尝试按照 ControlAltDel 的方式进行解释,但没有成功,我将在其他时间研究这些事件。但是,我能够使用以下逻辑使代码工作:


let btn = document.querySelector("#btn");


btn.onclick = function createSquare() {

  let divSquare = document.createElement("div");

  divSquare.setAttribute("class", "square");

  divSquare.addEventListener("mouseover", function() {

    let letters = "0123456789ABCDEF";

    let color = "#";

    for (let i = 0; i < 6; i++) {

      color += letters[Math.floor(Math.random() * 16)];

    }

    return (this.style.backgroundColor = color);

  });

  let container = document.querySelector("#container");

  container.appendChild(divSquare);

};

#container {

  display: flex;

  width: 100%;

  height: 100%;

  flex-wrap: wrap;

}

.square {

  width: 100px;

  height: 100px;

  background-color: red;

  margin: 1px;

}

<button id="btn">Click here for create a new square</button>

<div id="container"></div>


我避免使用 querySelector 并使用 addEventListener 来解决我的问题。


谢谢你的帮助。


查看完整回答
反对 回复 2021-12-02
  • 2 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信