亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 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 關注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號