簡體   English   中英

如何轉換此代碼以便函數可以采用變量?

[英]How do I convert this code so the functions can take a variable?

當鼠標經過它們時,我正在嘗試更改導航欄元素的顏色。

這段代碼可以做到這一點,但僅適用於第一個按鈕:

let navOne = document.getElementById("nav1");

function mouseOn() {
    nav1.style.color = "red";
}

function mouseOff() {
    nav1.style.color = "black";
}

navOne.addEventListener('mouseover', mouseOn);
navOne.addEventListener('mouseout', mouseOff);

我一直在嘗試轉換代碼,以便這些功能適用於多個按鈕,但似乎無法使其正常工作。 這是到目前為止的代碼:

let navOne = document.getElementById("nav1");

function mouseOn(navButton) {
    navButton.style.color = "red";
}

function mouseOff(navButton) {
    navButton.style.color = "black";
}

navOne.addEventListener('mouseover', mouseOn(navOne));
navOne.addEventListener('mouseout', mouseOff(navOne));

它沒有錯誤,但當我將鼠標按鈕移到 nav1 元素上時不會導致任何顏色變化。

任何幫助是極大的贊賞。

您可以讓事件處理函數利用傳入的event參數:

 function mouseOn(e) { e.target.style.color = "red"; } function mouseOff(e) { e.target.style.color = "black"; } for (let navItem of document.querySelectorAll('nav a')) { navItem.addEventListener('mouseover', mouseOn); navItem.addEventListener('mouseout', mouseOff); }
 nav a { display: inline-block; padding: 10px; color: black; }
 <nav> <a href="#" id="nav1">Nav One</a> <a href="#" id="nav2">Nav Two</a> </nav>

但是,現在使用 css :hover偽屬性將是首選方法。 無需 JS 代碼。

 nav a { display: inline-block; padding: 10px; color: black; } nav a:hover { color: red; }
 <nav> <a href="#">Nav One</a> <a href="#">Nav Two</a> </nav>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM