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

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

通過 .addEventListener 迭代函數到 div 不起作用

通過 .addEventListener 迭代函數到 div 不起作用

翻過高山走不出你 2022-11-27 16:51:02
我嘗試將帶有 Eventlistener 的函數添加到帶有 for 循環的一行 div 中。但是這些功能不起作用。div 中沒有發生任何事情。所有 div 都在 PHP 文件中定義。記者:function chartouterdivscalemax(i) {        var a = document.getElementsByClassName('chartouterdiv');    a[i].style.transform = "scale(1.25)";        var b = document.getElementsByClassName('logocontainer');    b[i].style.transform = "scale(1.25)";    b[i].style.transform = "translate(0px, 10px)";        var c = document.getElementsByClassName('highdiv');    c[i].style.height = "70px";        var d = document.getElementsByClassName('lowdiv');    d[i].style.height = "35px";    }function chartouterdivscalemin(i) {        var a = document.getElementsByClassName('chartouterdiv');    a[i].style.transform = "scale(1)";        var b = document.getElementsByClassName('logocontainer');    b[i].style.transform = "scale(1)";        var c = document.getElementsByClassName('highdiv');    c[i].style.height = "55px";        var d = document.getElementsByClassName('lowdiv');    d[i].style.height = "50px";       }function iteratescalefunction() {        var elements = document.getElementsByClassName('chartouterdiv');        for (var i = 0; i <= elements.length; i++ ){                elements[i].addEventListener("mouseover", function(i){chartouterdivscalemax(i)}, false);        elements[i].addEventListener("mouseout", function(i){chartouterdivscalemin(i)}, false);        console.log(i);    }}CSS:.chartouterdiv{        height:115px;    width:215px;    background-color: black;    display: flex;    align-items: center;    justify-content: center;    transition: 0.5s;    transform: scale(1);   }.chartinnerdiv{        height: 105px;    width: 205px;    background-color: white;}.highdiv{        height: 55px;    width: 205px;    background-color: antiquewhite;    transition: 0.5s;}.lowdiv{        height: 50px;    width: 205p;    background-color: aqua;    display: flex;    align-items:center;    justify-content: center;    transition: 0.5s;}}
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

那么你需要使用let關鍵字而不是var關鍵字來聲明i循環內的變量以避免閉包,同樣在你的事件監聽.addEventListener("mouseover", function(i) {器中匿名函數不應該使用變量 i 在這種情況下它是事件對象而不是你可能期望的,所以它應該是唯一.addEventListener("mouseover", function() {的,并讓i循環使用,在這里我做了這個簡單的例子來證明,我正在使用我自己的 HTML 和 CSS,以及你的一些 JS,因為這才是最重要的


var circles = document.getElementsByClassName('circle');

function chartOuterDivScaleMax(i) {

  circles[i].style.transform = "scale(1.25)";

}


function chartOuterDivScaleMin(i) {

  circles[i].style.transform = "scale(1)";   

}


function iterateScaleFunction() {

  for(let i = 0; i < circles.length; i++ ) {

    circles[i].addEventListener("mouseover", function() {chartOuterDivScaleMax(i)}, false);

    circles[i].addEventListener("mouseout", function() {chartOuterDivScaleMin(i)}, false);

  }

}


iterateScaleFunction();

* {

  box-sizing: border-box;

}

#circles-container {

  display: flex;

}

.circle-container {

  width: 52px;

  height: 52px;

  padding: 5px;

  border-radius: 50%;

  border: 1px solid red;

}

.circle {

  width: 40px;

  height: 40px;

  border-radius: 50%;

  background-color: orange;

}

<div id="circles-container">

  <div class="circle-container">

    <div class="circle"></div>

  </div>

  <div class="circle-container">

    <div class="circle"></div>

  </div>

  <div class="circle-container">

    <div class="circle"></div>

  </div>

  <div class="circle-container">

    <div class="circle"></div>

  </div>

  <div class="circle-container">

    <div class="circle"></div>

  </div>

</div>

或者你可以用一種簡單的方式在 CSS 中做同樣的事情


* {

  box-sizing: border-box;

}

#circles-container {

  display: flex;

}

.circle-container {

  width: 52px;

  height: 52px;

  padding: 5px;

  border-radius: 50%;

  border: 1px solid red;

}

.circle {

  width: 40px;

  height: 40px;

  border-radius: 50%;

  background-color: orange;

}

.circle:hover {

  transform: scale(1.25);

}

<div id="circles-container">

  <div class="circle-container">

    <div class="circle"></div>

  </div>

  <div class="circle-container">

    <div class="circle"></div>

  </div>

  <div class="circle-container">

    <div class="circle"></div>

  </div>

  <div class="circle-container">

    <div class="circle"></div>

  </div>

  <div class="circle-container">

    <div class="circle"></div>

  </div>

</div>


查看完整回答
反對 回復 2022-11-27
  • 1 回答
  • 0 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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