鼠标离开的时候背景颜色去除的问题?
来源:6-2 作业题
OlafChou
2017-09-02 16:35:52


// 封装一个代替getElementById()的方法
function byId(id){
return typeof(id) === "string"?document.getElementById(id):id;
}
// 全局变量
var index = 0,
timer = null,
pics = byId("banner").getElementsByTagName("div"),
dots = byId("dots").getElementsByTagName("span"),
prev = byId("prev"),
next = byId("next"),
len = pics.length,
menu = byId("menu-content"),
subMenu = byId("sub-menu"),
innerBox = subMenu.getElementsByClassName("inner-box"),
menuItems = menu.getElementsByClassName("menu-item");
function slideImg(){
var main = byId("main");
// 滑过清除定时器,离开继续
main.onmouseover =function(){
// 滑过清除定时器
if(timer) clearInterval(timer)
}
// 调用onmouseout事件
main.onmouseout = function(){
timer = setInterval(function(){
index++; // len = 3 0 1 2
if(index >= len){
index = 0;
}
// 切换图片,index为全局变量,不需要传参数
changeImg();
},3000);
}
//调用onmouseout方法,自动在main上触发鼠标离开的事件
main.onmouseout();
//遍历素有点击,且绑定点击事件,点击圆点切换图片
for(var d=0;d<len;d++){
// 给所有span添加一个id的属性值为d,作为当前span的索引
dots[d].id = d;
dots[d].onclick = function(){
// 改变index为当前span的id值
index = this.id;
// 调用changeImg,实现切换图片
changeImg();
}
}
// 下一张
next.onclick = function(){
index++;
if(index >= len) index = 0;
changeImg();
}
// 上一张
prev.onclick = function(){
index--;
if(index < 0) index=len-1;
changeImg();
}
// 导航菜单
// 遍历主菜单,且绑定事件
for(var m=0;m<menuItems.length;m++){
// 给每一个menu-item定义data-index属性,作为索引
menuItems[m].setAttribute("data-index",m);
menuItems[m].onmouseover =function(){
subMenu.className ="sub-menu";
var idx = this.getAttribute("data-index");
// 遍历所有子菜单,将每一个都隐藏
for(var j=0;j<innerBox.length;j++){
innerBox[j].style.display = "none";
menuItems[j].style.background = "none";
}
menuItems[idx].style.background ="rgba(0,0,0,0.1)";
innerBox[idx].style.display = "block";
}
// menuItems[m].onmouseout = function(){
// menuItems[idx].style.background = "rgba(0,0,0,0)";
}
}
menu.onmouseout = function(){
subMenu.className = "sub-menu hide";
}
subMenu.onmouseover = function(){
this.className = "sub-menu";
// menuItems[idx].style.background ="rgba(0,0,0,0.1)"
}
subMenu.onmouseout = function(){
this.className = "sub-menu hide";
// menuItems[idx].style.background ="rgba(0,0,0,0)";
}
// 切换图片
function changeImg(){
// 遍历banner下所有的div及dots下所有的span,将div隐藏,将span清除类
for(var i=0;i<len;i++){
pics[i].style.display ="none";
dots[i].className ="";
}
// 根据index索引找到当前div和当前span,将其显示出来和设为当前
pics[index].style.display = "block";
dots[index].className = "active";
}
slideImg();8回答
你好,你这是没有修改的吧,这个还是跟之前粘的代码一样呀,而且也没有报错呀啊,就是移出之后,颜色还是没有改变,下面是修改的代码,就是加个上面说的那段代码,你对比下吧。
// 封装一个代替getElementById()的方法
function byId(id){
return typeof(id) === "string"?document.getElementById(id):id;
}
// 全局变量
var index = 0,
timer = null,
pics = byId("banner").getElementsByTagName("div"),
dots = byId("dots").getElementsByTagName("span"),
prev = byId("prev"),
next = byId("next"),
len = pics.length,
menu = byId("menu-content"),
subMenu = byId("sub-menu"),
innerBox = subMenu.getElementsByClassName("inner-box"),
menuItems = menu.getElementsByClassName("menu-item");
function slideImg(){
var main = byId("main");
// 滑过清除定时器,离开继续
main.onmouseover =function(){
// 滑过清除定时器
if(timer) clearInterval(timer)
}
// 调用onmouseout事件
main.onmouseout = function(){
timer = setInterval(function(){
index++; // len = 3 0 1 2
if(index >= len){
index = 0;
}
// 切换图片,index为全局变量,不需要传参数
changeImg();
},3000);
}
//调用onmouseout方法,自动在main上触发鼠标离开的事件
main.onmouseout();
//遍历素有点击,且绑定点击事件,点击圆点切换图片
for(var d=0;d<len;d++){
// 给所有span添加一个id的属性值为d,作为当前span的索引
dots[d].id = d;
dots[d].onclick = function(){
// 改变index为当前span的id值
index = this.id;
// 调用changeImg,实现切换图片
changeImg();
}
}
// 下一张
next.onclick = function(){
index++;
if(index >= len) index = 0;
changeImg();
}
// 上一张
prev.onclick = function(){
index--;
if(index < 0) index=len-1;
changeImg();
}
// 导航菜单
// 遍历主菜单,且绑定事件
for(var m=0;m<menuItems.length;m++){
// 给每一个menu-item定义data-index属性,作为索引
menuItems[m].setAttribute("data-index",m);
menuItems[m].onmouseover =function(){
subMenu.className ="sub-menu";
var idx = this.getAttribute("data-index");
// 遍历所有子菜单,将每一个都隐藏
for(var j=0;j<innerBox.length;j++){
innerBox[j].style.display = "none";
menuItems[j].style.background = "none";
}
menuItems[idx].style.background ="rgba(0,0,0,0.1)";
innerBox[idx].style.display = "block";
}
menuItems[m].onmouseout = function(){
this.style.background = "rgba(0,0,0,0)";
}
}
}
menu.onmouseout = function(){
subMenu.className = "sub-menu hide";
}
subMenu.onmouseover = function(){
this.className = "sub-menu";
}
subMenu.onmouseout = function(){
this.className = "sub-menu hide";
}
// 切换图片
function changeImg(){
// 遍历banner下所有的div及dots下所有的span,将div隐藏,将span清除类
for(var i=0;i<len;i++){
pics[i].style.display ="none";
dots[i].className ="";
}
// 根据index索引找到当前div和当前span,将其显示出来和设为当前
pics[index].style.display = "block";
dots[index].className = "active";
}
slideImg();祝学习愉快~
OlafChou
提问者
2017-09-06
// 封装一个代替getElementById()的方法
function byId(id){
return typeof(id) === "string"?document.getElementById(id):id;
}
// 全局变量
var index = 0,
timer = null,
pics = byId("banner").getElementsByTagName("div"),
dots = byId("dots").getElementsByTagName("span"),
prev = byId("prev"),
next = byId("next"),
len = pics.length,
menu = byId("menu-content"),
subMenu = byId("sub-menu"),
innerBox = subMenu.getElementsByClassName("inner-box"),
menuItems = menu.getElementsByClassName("menu-item");
function slideImg(){
var main = byId("main");
// 滑过清除定时器,离开继续
main.onmouseover =function(){
// 滑过清除定时器
if(timer) clearInterval(timer)
}
// 调用onmouseout事件
main.onmouseout = function(){
timer = setInterval(function(){
index++; // len = 3 0 1 2
if(index >= len){
index = 0;
}
// 切换图片,index为全局变量,不需要传参数
changeImg();
},3000);
}
//调用onmouseout方法,自动在main上触发鼠标离开的事件
main.onmouseout();
//遍历素有点击,且绑定点击事件,点击圆点切换图片
for(var d=0;d<len;d++){
// 给所有span添加一个id的属性值为d,作为当前span的索引
dots[d].id = d;
dots[d].onclick = function(){
// 改变index为当前span的id值
index = this.id;
// 调用changeImg,实现切换图片
changeImg();
}
}
// 下一张
next.onclick = function(){
index++;
if(index >= len) index = 0;
changeImg();
}
// 上一张
prev.onclick = function(){
index--;
if(index < 0) index=len-1;
changeImg();
}
// 导航菜单
// 遍历主菜单,且绑定事件
for(var m=0;m<menuItems.length;m++){
// 给每一个menu-item定义data-index属性,作为索引
menuItems[m].setAttribute("data-index",m);
menuItems[m].onmouseover =function(){
subMenu.className ="sub-menu";
var idx = this.getAttribute("data-index");
// 遍历所有子菜单,将每一个都隐藏
for(var j=0;j<innerBox.length;j++){
innerBox[j].style.display = "none";
menuItems[j].style.background = "none";
}
menuItems[idx].style.background ="rgba(0,0,0,0.1)";
innerBox[idx].style.display = "block";
}
// menuItems[m].onmouseout = function(){
// this.style.background = "rgba(0,0,0,0)";
}
}
menu.onmouseout = function(){
subMenu.className = "sub-menu hide";
}
subMenu.onmouseover = function(){
this.className = "sub-menu";
}
subMenu.onmouseout = function(){
this.className = "sub-menu hide";
}
// 切换图片
function changeImg(){
// 遍历banner下所有的div及dots下所有的span,将div隐藏,将span清除类
for(var i=0;i<len;i++){
pics[i].style.display ="none";
dots[i].className ="";
}
// 根据index索引找到当前div和当前span,将其显示出来和设为当前
pics[index].style.display = "block";
dots[index].className = "active";
}
slideImg();
好帮手慕糖
2017-09-06
你好,你把你修改的代码整段贴上了的吧。祝学习愉快~
OlafChou
提问者
2017-09-05
还是没用。。。咋回事呢
好帮手慕糖
2017-09-05
你好,我测试的是可以的,现在把代码粘贴给你,你核对下:
for(var m=0;m<menuItems.length;m++){
// 给每一个menu-item定义data-index属性,作为索引
menuItems[m].setAttribute("data-index",m);
menuItems[m].onmouseover =function(){
subMenu.className ="sub-menu";
var idx = this.getAttribute("data-index");
// 遍历所有子菜单,将每一个都隐藏
for(var j=0;j<innerBox.length;j++){
innerBox[j].style.display = "none";
menuItems[j].style.background = "none";
}
menuItems[idx].style.background ="rgba(0,0,0,0.1)";
innerBox[idx].style.display = "block";
}
menuItems[m].onmouseout = function(){
this.style.background = "rgba(0,0,0,0)";
}
}这样改的话,就是移入旁边的二级菜单上面的时候,也没有背景颜色了,不过你可以在设置下。
祝学习愉快~
好帮手慕糖
2017-09-05
你好,由于你只贴了部分的代码,我是在源码的基础上改的,你可以尝试添加的如下位置。

祝学习愉快~
好帮手慕糖
2017-09-04
你好,这里可以添加如下样式,
menuItems[m].onmouseout = function(){
this.style.background = "rgba(0,0,0,0)";
}祝学习愉快~
小丸子爱吃菜
2017-09-03
请将你的问题描述清除,如果是你的作业问题,可以将代码上传完整,便于我们运行并查找问题!
祝学习愉快!
相似问题