首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用.addEventListener更改盒的背景色

用.addEventListener更改盒的背景色
EN

Stack Overflow用户
提问于 2020-06-24 00:17:49
回答 3查看 187关注 0票数 1

当指针在js中悬停时,我试图使某些框的背景色发生变化,但没有任何运气。这是js

代码语言:javascript
复制
var box = document.getElementByClassName("box");

box.addEventListener("mouseover", function(){
  this.style.backgroundColor = "#aad9f1";
});
box.addEventListener("mouseout", function(){
  this.style.backgroundColor = "#9Ac9e1";
});

以下是box类的css

代码语言:javascript
复制
.box{
  height: 25px;
  width: 14.25%;
  overflow-x: hidden;
  border: 0px solid black;
  background-color: #9Ac9e1;
  float: left;
  font-size: 130%;
}

和html文件中的框。

代码语言:javascript
复制
    <div class="menubar_box">
      <div class="box"><a href="index.html">Home</a></div>
      <div class="box"><a href="pages/microphones.html">Microphones</a></div>
      <div class="box"><a href="pages/preamps.html">Preamps</a></div>
      <div class="box"><a href="pages/compressors.html">Compressors</a></div>
      <div class="box"><a href="pages/equalizers.html">Equalizers</a></div>
      <div class="box"><a href="pages/instruments.html">Instruments</a></div>
      <div class="box"><a href="pages/miscellaneous.html">Miscellaneous</a></div>
    </div>

我还将app.js链接到index.html中,但是当我在盒子上鼠标移动时,什么都不会发生。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-24 00:22:23

注意打字,并遍历元素:

代码语言:javascript
复制
var box = document.getElementsByClassName("box");

for (let i = 0; i < box.length; i++) {
  box[i].addEventListener("mouseover", function(){
    this.style.backgroundColor = "#aad9f1";
  });
  box[i].addEventListener("mouseout", function(){
    this.style.backgroundColor = "#9Ac9e1";
  });
} 
代码语言:javascript
复制
.box{
  height: 25px;
  width: 14.25%;
  overflow-x: hidden;
  border: 0px solid black;
  background-color: #9Ac9e1;
  float: left;
  font-size: 130%;
}
代码语言:javascript
复制
    <div class="menubar_box">
      <div class="box"><a href="index.html">Home</a></div>
      <div class="box"><a href="pages/microphones.html">Microphones</a></div>
      <div class="box"><a href="pages/preamps.html">Preamps</a></div>
      <div class="box"><a href="pages/compressors.html">Compressors</a></div>
      <div class="box"><a href="pages/equalizers.html">Equalizers</a></div>
      <div class="box"><a href="pages/instruments.html">Instruments</a></div>
      <div class="box"><a href="pages/miscellaneous.html">Miscellaneous</a></div>
    </div>

但是,您可以做的是将hover规则放在CSS中:

代码语言:javascript
复制
.box{
  height: 25px;
  width: 14.25%;
  overflow-x: hidden;
  border: 0px solid black;
  background-color: #9Ac9e1;
  float: left;
  font-size: 130%;
  transition: transform .2s; /* Animation */
}

.box:hover {
  background-color: #aad9f1;
  transform: scale(1.5);
}
代码语言:javascript
复制
    <div class="menubar_box">
      <div class="box"><a href="index.html">Home</a></div>
      <div class="box"><a href="pages/microphones.html">Microphones</a></div>
      <div class="box"><a href="pages/preamps.html">Preamps</a></div>
      <div class="box"><a href="pages/compressors.html">Compressors</a></div>
      <div class="box"><a href="pages/equalizers.html">Equalizers</a></div>
      <div class="box"><a href="pages/instruments.html">Instruments</a></div>
      <div class="box"><a href="pages/miscellaneous.html">Miscellaneous</a></div>
    </div>

票数 1
EN

Stack Overflow用户

发布于 2020-06-24 00:28:02

一些问题..。您使用的getElementByClassName应该是=> getElementsByClassName,注意Elements的复数用法--第二,您有一个要查询的元素列表,因此您需要引用选择器的键。在下面的示例中,我使用querySelectorAll()创建了一个nodeList,然后将代码包装在一个forEach循环中,遍历nodelist并找到所选元素的值。

注意: getElementsByClassName返回HTML collection__,因此forEach不会使用它,正如另一个用户在回答中指出的那样,您可以使用for循环并将迭代器或计数器的值作为关键指示符进行迭代。for(let i = 0; i < box.length; i++)然后在循环中使用迭代器=> i__找到集合的元素。

代码语言:javascript
复制
let box = document.querySelectorAll(".box");
box.forEach((value, index) => {
  box[index].addEventListener("mouseover", function() {
    value.style.backgroundColor = "#aad9f1";
    value.style.cssText = 'transform: scale(1.2);'
  });
  box[index].addEventListener("mouseout", function() {
    value.style.backgroundColor = "#9Ac9e1";
    value.style.cssText = 'transform: scale(1);'
  });
})
代码语言:javascript
复制
.menubar_box {
  display: flex;
}

.box {
  width: 100%;
  height: 25px;
  border: 0px solid black;
  background-color: #9Ac9e1;
  font-size: 130%;
  display: flex;
  align-items:center; 
  justify-content:center;
  padding: 2px 10px;
}
代码语言:javascript
复制
<div class="menubar_box">
  <div class="box"><a href="index.html">Home</a></div>
  <div class="box"><a href="pages/microphones.html">Microphones</a></div>
  <div class="box"><a href="pages/preamps.html">Preamps</a></div>
  <div class="box"><a href="pages/compressors.html">Compressors</a></div>
  <div class="box"><a href="pages/equalizers.html">Equalizers</a></div>
  <div class="box"><a href="pages/instruments.html">Instruments</a></div>
  <div class="box"><a href="pages/miscellaneous.html">Miscellaneous</a></div>
</div>

票数 0
EN

Stack Overflow用户

发布于 2020-06-24 00:30:41

您应该将document.getElementByClassName("box") (其中有一个错误)替换为document.querySelectorAll(".box")。如果需要选择具有给定类、id、标记等元素,则此方法更可重用。

使用此方法时,boxes将是与选择器匹配的所有元素的数组。所以你必须把你的逻辑运用到每个人身上。forEach方法对此最好。

下面是一个有用的例子:

代码语言:javascript
复制
var boxes = document.querySelectorAll(".box");

boxes.forEach((box) => {
  box.addEventListener("mouseover", function(){
    this.style.backgroundColor = "#aad9f1";
  });
  
  box.addEventListener("mouseout", function(){
    this.style.backgroundColor = "#9Ac9e1";
  });
})
代码语言:javascript
复制
.box{
     height: 25px;
     width: 14.25%;
     overflow-x: hidden;
     border: 0px solid black;
     background-color: #9Ac9e1;
     float: left;
     font-size: 130%;
 }
代码语言:javascript
复制
<div class="menubar_box">
    <div class="box"><a href="index.html">Home</a></div>
        <div class="box"><a href="pages/microphones.html">Microphones</a></div>
    <div class="box"><a href="pages/preamps.html">Preamps</a></div>
    <div class="box"><a href="pages/compressors.html">Compressors</a></div>
    <div class="box"><a href="pages/equalizers.html">Equalizers</a></div>
    <div class="box"><a href="pages/instruments.html">Instruments</a></div>
    <div class="box"><a href="pages/miscellaneous.html">Miscellaneous</a></div>
 </div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62545678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档