Javascript 使用切换开关更改背景颜色
Javascript 使用切换开关更改背景颜色,javascript,html,css,Javascript,Html,Css,document.getElementsByName(“复选框”).onclick=function(){myFunction()}; 函数myFunction(){ document.body.style.backgroundColor=“黑色”; } .开关{ 位置:相对位置; 显示:内联块; 宽度:60px; 高度:34px; } .开关输入{显示:无;} .滑块{ 位置:绝对位置; 光标:指针; 排名:0; 左:0; 右:0; 底部:0; 背景色:#ccc; -webkit转换:.4
document.getElementsByName(“复选框”).onclick=function(){myFunction()};
函数myFunction(){
document.body.style.backgroundColor=“黑色”;
}
.开关{
位置:相对位置;
显示:内联块;
宽度:60px;
高度:34px;
}
.开关输入{显示:无;}
.滑块{
位置:绝对位置;
光标:指针;
排名:0;
左:0;
右:0;
底部:0;
背景色:#ccc;
-webkit转换:.4s;
过渡:.4s;
}
.滑块:之前{
位置:绝对位置;
内容:“;
高度:26px;
宽度:26px;
左:4px;
底部:4px;
背景色:白色;
-webkit转换:.4s;
过渡:.4s;
}
输入:选中+滑块{
背景色:#2196F3;
}
输入:焦点+.滑块{
盒影:0 0 1px#2196F3;
}
输入:选中+。滑块:之前{
-webkit转换:translateX(26px);
-ms变换:translateX(26px);
转化:translateX(26px);
}
身体{
背景色:红色;
}
.开关{
位置:相对位置;
显示:内联块;
宽度:60px;
高度:34px;
}
.开关输入{显示:无;}
.滑块{
位置:绝对位置;
光标:指针;
排名:0;
左:0;
右:0;
底部:0;
背景色:#ccc;
-webkit转换:.4s;
过渡:.4s;
}
.滑块:之前{
位置:绝对位置;
内容:“;
高度:26px;
宽度:26px;
左:4px;
底部:4px;
背景色:白色;
-webkit转换:.4s;
过渡:.4s;
}
输入:选中+滑块{
背景色:#2196F3;
}
输入:焦点+.滑块{
盒影:0 0 1px#2196F3;
}
输入:选中+。滑块:之前{
-webkit转换:translateX(26px);
-ms变换:translateX(26px);
转化:translateX(26px);
}
身体{
背景色:红色;
}
拨动开关
document.getElementsByName(“复选框”).onclick=function(){myFunction()};
函数myFunction(){
document.body.style.backgroundColor=“黑色”;
}
您应该在此处进行两项更改:
首先,在键入document.getElementsByName(“复选框”)[0]时,应该添加数组索引号,因为getElementsByName
返回数组:
document.getElementsByName("checkbox")[0].onclick = function() {myFunction()};
其次,您应该添加name属性
外接程序复选框
,因为您通过getElementsByName
选择元素,但它在元素中不存在:
<label class="switch">
<input type="checkbox" name="checkbox">
<span class="slider"></span>
</label>
.开关{
位置:相对位置;
显示:内联块;
宽度:60px;
高度:34px;
}
.开关输入{显示:无;}
.滑块{
位置:绝对位置;
光标:指针;
排名:0;
左:0;
右:0;
底部:0;
背景色:#ccc;
-webkit转换:.4s;
过渡:.4s;
}
.滑块:之前{
位置:绝对位置;
内容:“;
高度:26px;
宽度:26px;
左:4px;
底部:4px;
背景色:白色;
-webkit转换:.4s;
过渡:.4s;
}
输入:选中+滑块{
背景色:#2196F3;
}
输入:焦点+.滑块{
盒影:0 0 1px#2196F3;
}
输入:选中+。滑块:之前{
-webkit转换:translateX(26px);
-ms变换:translateX(26px);
转化:translateX(26px);
}
身体{
背景色:#BB9797;
}
拨动开关
var checkbox=document.getElementsByName(“复选框”)[0];
checkbox.onclick=function(){myFunction()};
函数myFunction(){
如果(checkbox.checked){document.body.style.backgroundColor=“black”;}
else{document.body.style.backgroundColor=“#BB9797”;}
}
您的代码存在的问题是,由于您使用了错误的方法获取元素,因此没有向复选框注册单击事件。尝试改用idgetElementById
。下面是一个解决方案。希望这有帮助
.开关{
位置:相对位置;
显示:内联块;
宽度:60px;
高度:34px;
}
.开关输入{
显示:无;
}
.滑块{
位置:绝对位置;
光标:指针;
排名:0;
左:0;
右:0;
底部:0;
背景色:#ccc;
-webkit转换:.4s;
过渡:.4s;
}
.滑块:之前{
位置:绝对位置;
内容:“;
高度:26px;
宽度:26px;
左:4px;
底部:4px;
背景色:白色;
-webkit转换:.4s;
过渡:.4s;
}
输入:选中+滑块{
背景色:#2196F3;
}
输入:焦点+.滑块{
盒影:0 0 1px#2196F3;
}
输入:选中+。滑块:之前{
-webkit转换:translateX(26px);
-ms变换:translateX(26px);
转化:translateX(26px);
}
身体{
背景色:#BB9797;
}
拨动开关
document.getElementById(“toggleSwitch”).onclick=function(){
myFunction()
};
函数myFunction(){
让颜色=document.body.style.background;
如果(颜色==‘黑色’){
document.body.style.background=“#BB9797”;
}否则{
document.body.style.background=“黑色”;
}
}
我认为另一个更干净的解决方案是使用classList.toggle
在body元素上切换类。这样,如果需要重新设计颜色,就不需要更改任何代码。只需要更改CSS
document.getElementById(“toggleSwitch”).onclick=function(){myFunction()};
函数myFunction(){
document.body.classList.toggle(“打开”);
}
开关{
位置:相对位置;
显示:内联块;
宽度:60px;
高度:34px;
}
.开关输入{显示:无;}
.滑块{
位置:绝对位置;
光标:指针;
排名:0;
左:0;
右:0;
底部:0;
背景色:#ccc;
-webkit转换:.4s;
过渡:.4s;
}
.滑块:之前{
位置:绝对位置;
内容:“;
高度:26px;
宽度:26px;
左:4px;
底部:4px;
背景色:白色;
-webkit转换:.4s;
过渡:.4s;
}
输入:che