Javascript 尝试使用JS切换背景色
我是JavaScript新手,我试图通过更改元素的类来获得一个按钮来更改元素的背景色。 我结合了一些不同来源的js,但它不起作用,我也不知道为什么Javascript 尝试使用JS切换背景色,javascript,html,css,Javascript,Html,Css,我是JavaScript新手,我试图通过更改元素的类来获得一个按钮来更改元素的背景色。 我结合了一些不同来源的js,但它不起作用,我也不知道为什么 函数myFunc(){ 变量y=document.getElementById(“bg-change1”).getAttribute(“类”); 如果(y==“正常”){ y=“活动”; }否则{ y=“正常”; } } 。正常{ 背景色:白色; } .主动{ 背景颜色:绿色; } 点击这里 等 您可以使用纯JavaScript以短格式完成:
函数myFunc(){
变量y=document.getElementById(“bg-change1”).getAttribute(“类”);
如果(y==“正常”){
y=“活动”;
}否则{
y=“正常”;
}
}
。正常{
背景色:白色;
}
.主动{
背景颜色:绿色;
}
点击这里
等
您可以使用纯JavaScript以短格式完成:
function myFunc() {
var y = document.getElementById("bg-change1");
y.classList.toggle("active")
}
但是请记住,当前的css选择器顺序必须使“.active”类优先于“.normal”。您需要在最后分配值,您只得到了不够的值。您只是缺少了
document.getElementById(“bg-change1”).setAttribute(“class”,y)代码>位于函数末尾
函数myFunc(){
变量y=document.getElementById(“bg-change1”).getAttribute(“类”);
如果(y==“正常”){
y=“活动”;
}否则{
y=“正常”;
}
document.getElementById(“bg-change1”).setAttribute(“类”,y);
}
。正常{
背景色:白色;
}
.主动{
背景颜色:绿色;
}
点击这里
等
getAttribute(“类”)
在调用属性时返回属性的内容。因为这是一个字符串,所以没有对元素的引用。因此,重新分配y
没有任何作用
要实际更改属性,可以使用setAttribute(“class”,“active”)
。但这不是一个好的解决方案,因为您不能有多个类,而normal
类是不必要的
只需使用不同的选择器(例如,#bg-change1
)应用默认样式,并覆盖要在.active
选择器中更改的属性。然后,您可以使用document.getElementById(“bg-change1”).classList.toggle(“active”)
在两种“模式”之间切换。您成功地获得了属性,但从未更改或设置它。使用document.getElementById(“bg-change1”).setAttribute(“class”,y)执行该操作代码>
例如:
函数myFunc(){
变量y=document.getElementById(“bg-change1”).getAttribute(“类”);
如果(y==“正常”){
y=“活动”;
}否则{
y=“正常”;
}
document.getElementById(“bg-change1”).setAttribute(“类”,y);
}
。正常{
背景色:白色;
}
.主动{
背景颜色:绿色;
}
点击这里
等
这里您正在检索y中的类并更改类名,但它没有设置为返回元素
相反,你可以使用
function myFunc() {
var y = document.getElementById("bg-change1").getAttribute("class");
if (y === "normal") {
document.getElementById("bg-change1").classList.remove('normal');
document.getElementById("bg-change1").classList.add('active');
} else {
document.getElementById("bg-change1").classList.remove('active');
document.getElementById("bg-change1").classList.add('normal');
}
}
这是一种添加和删除类的狭义方法。我建议实现toggle类方法,请参见以下内容:
函数myFunc(){
变量y=document.getElementById(“bg-change1”);
y、 切换(“活动”);
}
。正常{
背景色:白色;
}
.主动{
背景颜色:绿色;
}
点击这里
等
也许最好添加完整的代码来向他展示;)基于他的代码,只要遵循我的函数就无需更改,这足以完美地工作。我知道,但它只会让您的答案更完整,或者使用Hanif的答案时使用更短的格式。切换函数Nonymous coward downvoter care以评论?请帮我们大家一个忙,养一对,解释一下这个答案有什么问题。