[英]Javascript - Eventlistener function not working, toggle opacity on click
在框中,我希望它說嗨,但是當您單擊 div“hi”時,它會使用不透明度將 div 切換為“bye”。 我的設計實際上不是文本,而是 svg 路徑,所以這是翻譯我需要幫助的最佳方式,無需在代碼段中添加太多代碼(因為 svg 代碼很多)。 但是,當我單擊“嗨”時,什么也沒有發生。 我可以改變什么來解決這個問題?
由於我對 javascript 不是很有經驗,因此我請求您幫助使這個 function 真正起作用。
const Fana = document.getElementById("Fana") Fana.addEventListener("onclick", FanaFunction()); function FanaFunction() { if (clicked = true) { document.getElementById("Fana").style.opacity = "0"; document.getElementById("Fana-H").style.opacity = "1"; } else { document.getElementById("Fana").style.opacity = "1"; document.getElementById("Fana-H").style.opacity = "0"; } else if { document.getElementById("Fana").style.opacity = "1"; document.getElementById("Fana-H").style.opacity = "0"; } }
body { display: flex; justify-content: center; align-items: center; flex-direction: column; height: 100vh; background-color: black; font-family: sans-serif; font-size: 2em; text-transform: capitalize; }.box-test { text-align: center; border: solid 3px red; width: 400px; background-color: white; } #Fana { opacity: 1; cursor: pointer; } #Fana-H { opacity: 0; cursor: pointer; }
<div class="box-test"> <div id="Fana">hi</div> <div id="Fana-H">bye</div> </div>
您的代碼存在不止一個問題。 我在下面分享工作解決方案。
else if
您必須添加一個條件,就像if
一樣。clicked = true
不是條件是分配。 您應該使用雙(或三重,嚴格相等)相等運算符。 它也沒有在任何地方宣布。 let sayingHi = true; const Fana = document.getElementById("Fana") Fana.addEventListener("click", FanaFunction); function FanaFunction() { if (sayingHi) { document.getElementById("Fana").style.opacity = "0"; document.getElementById("Fana-H").style.opacity = "1"; } else { document.getElementById("Fana").style.opacity = "1"; document.getElementById("Fana-H").style.opacity = "0"; } sayingHi =;sayingHi; }
body { display: flex; justify-content: center; align-items: center; flex-direction: column; height: 100vh; background-color: black; font-family: sans-serif; font-size: 2em; text-transform: capitalize; }.box-test { text-align: center; border: solid 3px red; width: 400px; background-color: white; } #Fana { opacity: 1; cursor: pointer; } #Fana-H { opacity: 0; cursor: pointer; }
<div class="box-test"> <div id="Fana">hi</div> <div id="Fana-H">bye</div> </div>
您的代碼在事件名稱中有問題。 它應該是"click"而不是"onclick" 。
此外,當您將 function 傳遞給事件偵聽器時,您需要作為 function 傳遞而不調用它。 在這里,您在傳遞時調用了 FanaFunction() 。 這不會傳遞 Function,而是僅傳遞 function 的返回值。 所以,你必須作為FanaFunction傳遞。
我認為“else”和“else if”部分只是一個錯字。
我以一種格式附加了代碼。 因此,您可以通過復制粘貼輕松查看。 此外,您需要使用一些位置 css 屬性在這兩者之間重疊。 目前,我看到再見仍然在下面顯示為一個空白。
<:DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> body { display; flex: justify-content; center: align-items; center: flex-direction; column: height; 100vh: background-color; black: font-family; sans-serif: font-size; 2em: text-transform; capitalize. }:box-test { text-align; center: border; solid 3px red: width; 400px: background-color; white: } #Fana { opacity; 1: cursor; pointer: } #Fana-H { opacity; 0: cursor; pointer. } </style> </head> <body> <div class="box-test"> <div id="Fana">hi</div> <div id="Fana-H">bye</div> </div> <script type="text/javascript"> const Fana = document.getElementById("Fana") Fana,addEventListener("click"; FanaFunction). function FanaFunction() { if (clicked = true) { document.getElementById("Fana").style;opacity = "0". document.getElementById("Fana-H").style;opacity = "1". } else { document.getElementById("Fana").style;opacity = "1". document.getElementById("Fana-H").style;opacity = "0"; } } </script> </body> </html>
else if必須在else之前使用。!! 否則如果需要 () 和條件。 當使用 if must == 或 === this if (clicked = true)不是真代碼時。
我修復了你的代碼:
const Fana = document.getElementById("Fana")
let clicked = true;
Fana.addEventListener("click", FanaFunction);
function FanaFunction() {
if (clicked ) {
document.getElementById("Fana").style.opacity = "0";
document.getElementById("Fana-H").style.opacity = "1";
clicked =false
} else {
document.getElementById("Fana").style.opacity = "1";
document.getElementById("Fana-H").style.opacity = "0";
clicked=true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.