javascript问题

html描述就是有六个li有六个div功能就是每个li的鼠标移动事件是相对应的div隐藏起来li[i].onmouseover=function(){div[i].sty... html描述 就是有六个li 有六个div 功能就是每个li的鼠标移动事件 是 相对应的div隐藏起来
li[i].onmouseover = function(){div[i].style.display = "none"}
但是我写了一个js 怎样也运行不出来 代码如下
window.onload = function(){
var divs = document.getElementByTagName("div");
var lis = document.getElementByTagName("li");
for(var i =0; i < lis.length;i++){
lis[i].onmouseover = function(){
divs[i].style.dispaly = "none";

}

}

}
这个代码实际运行结果 就是每个li鼠标事件 都是让最后一个div隐藏 请教怎么改正 不要用jQuery
document.getElementsByTagName() 我少写一个字母 不是这里的问题哈
展开
 我来答
huibo865686
推荐于2016-09-26 · TA获得超过916个赞
知道小有建树答主
回答量:325
采纳率:80%
帮助的人:263万
展开全部
window.onload = function(){
  var lis = document.querySelectorAll('li');
  var divs = document.querySelectorAll('div');

  each(lis , function(li , i){
    li.onmouseover = function(){
      css(divs , 'display' , '');//先将所有div的样式还原
      css(divs[i] , 'display' , 'none');//隐藏对应div
    };
  });
}

function each(els , callback){
  for(var i=0,le; el = els[i] ; i++){
    callback(el , i , els);
  }
}

function css(el , key , val){
  if(el.length && !el.style){
    each(el , function(item){
       css(item , key , val)
    });
  }else if(el.style){
    el.style[key] = value;
  }
}
更多追问追答
追问
大神,能请问下我的那个代码 为什么错吗?
追答

变量 i 使用的不对,作用域没有控制好,还有没有清空div它们的显示状态

for(var i=0; i < lis.length; i++){
  (function(i){//这里使用i才是安全的
      var li = lis[i];
      li.onmouseover = function(){  
          divs///这里还需要将它们的状态还原
          divs[i].style.display = 'none';
      }
  }(i));//i从这里传入用来保存起来
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式