gpt4 book ai didi

Javascript 事件 - 如何使此代码干燥

转载 作者:行者123 更新时间:2023-12-01 03:53:17 25 4
gpt4 key购买 nike

我正在学习 JavaScript。有人可以帮我使这段代码干燥(不要重复自己)吗?该代码是通过单击特定的connected-with按钮来更改段落的颜色。我不知道如何使 changeColor 函数适用于特定的代码块,而不需要创建该函数的新版本。

var greenPar = document.getElementById("green-paragraph");
var greenColorBtn = document.getElementById("greenColorBtn");
var redPar = document.getElementById("red-paragraph");
var redColorBtn = document.getElementById("redColorBtn");
greenColorBtn.addEventListener("click", changeColorGreen);
redColorBtn.addEventListener("click", changeColorRed);

function changeColorGreen() {
if (greenPar.className == "") {
greenPar.className = "green"; //.green{ color:green;}
} else {
greenPar.className = "";
}
}

function changeColorRed() {
if (redPar.className == "") {
redPar.className = "red"; //.red{ color:red;}
} else {
redPar.className = "";
}
}

最佳答案

使用通用函数作为点击处理程序并传递颜色值作为参数。

由于您将在处理程序中使用 this 值,因此请使用 Function#bind并传递this-context, 第二个参数是要比较的颜色值。

var greenPar = document.getElementById("green-paragraph");
var greenColorBtn = document.getElementById("greenColorBtn");

var redPar = document.getElementById("red-paragraph");
var redColorBtn = document.getElementById("redColorBtn");

greenColorBtn.addEventListener("click", changeColor.bind(greenColorBtn, 'green'));
redColorBtn.addEventListener("click", changeColor.bind(redColorBtn, 'red'));

function changeColor(color) {
var thisElem = this;
if (thisElem.className == "") {
thisElem.className = color;
} else {
thisElem.className = "";
}
}

关于Javascript 事件 - 如何使此代码干燥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42998946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com