为了账号安全,请及时绑定邮箱和手机立即绑定

关于下拉菜单HTML+CSS+JavaScript中JS出错在哪我看不懂

关于下拉菜单HTML+CSS+JavaScript中JS出错在哪我看不懂

qq_那就好_2 2017-06-11 04:08:40
<!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script type="text/ecmascript" src="js/js2.js"></script> <link rel="stylesheet" href="css/17.css"> </head> <div id="ybl">     <ul> <li><a href="#">首页</a></li>   <li><a href="#">专业建设</a>  <ul> <li><a href="#">建设目标</a></li>  <li><a href="#">建设思路</a></li>  <li><a href="#">培养方案</a></li> </ul> </li> <li><a href="#">师资队伍</a> <ul> <li><a href="#"> 负责人</a></li> <li><a href="#">队伍结构</a></li> <li><a href="#">任课教师</a></li> <li><a href="#">教学管理</a></li> <li><a href="#">合作办学</a></li> </ul> </li> <li><a href="#">教学条件</a> <ul> <li><a href="#">经费投入</a></li> <li><a href="#">实践教学</a></li> <li><a href="#">教材改革</a></li>   </ul> </li> <li><a href="#">改革建设</a> <ul> <li><a href="#">课程改革</a></li> <li><a href="#">教材改革</a></li> </ul> </div> <body> </body> </html>// JavaScript Document function windowLoad()  { var lis = document.getElementById("menu").getElementsByTagName("li"); for (var i = 0; i <lis.length; i++){ lis [i].onmouseover = function() { this.className += (this.className.length >0?"":"") +"sfhover" }      lis[i].onmouseout = function ()  {  this.className = this.className.replace("sfhover","");    }        }    } window.onload = windowLoad; //窗口加载成功后执行 windoLoad 函数@charset "utf-8"; /* CSS Document */ body { font-family: "宋体"; font-size: 12px; line-height: 1.5em; } #ybl { width:500px;   height:28px;   margin:0 auto;   border-bottom: 3px solid #e10001; }   #ybl ul {    list-style:none;   margin:0px;   padding:0px; } #ybl ul li {    float:left;    margin-left: 1px; }   a { color:#000;     text-decoration: none; } a:hover { color: #F00; } #ybl ul li a {      display: block; width: 87px; height: 28px; line-height: 28px; text-align: center; background: url(../image/26.jpg) 0 0 repeat-x; font-size: 14px; }   #ybl ul li ul {   border: 1px solid #ccc;   position:absolute;    display:none; }   #ybl ul li ul li {  float:none;  line-height:87px; background: #eee; margin: 0px; }   #ybl ul li ul li a {  background: none; }   #ybl ul li ul li a:hover {  background-color:#333; color: #fff; }   #ybl ul li:hover ul {  display:block } #ybl ul li.sfhover ul { display: block; }大神帮我看看JS哪里出错了。。Uncaught TypeError: Cannot read property 'getElementsByTagName' of null
查看完整描述

4 回答

已采纳
?
ExiaGo

TA贡献20条经验 获得超18个赞

感觉这个好像很多问题啊,首先本该在 <body> 标签的内容放到了以外的地方,其次是应该将 js 中的 var lis = document.getElementById("menu").getElementsByTagName("li"); 改成

var lis = document.getElementById("ybl").getElementsByTagName("li"); 这样修改后面的 css 就不用改太多了。

第三,也是 js 内容中的添加样式 sfhover 在样式表里 82 行 #ybl ul li.sfhover ul ,改成

 #ybl ul li.sfhover { 

display: block;

    border: 1px solid blue;

}

你就能看到效果了,本来就是鼠标移动到下拉菜单添加样式的意思,但是原来的写法根本看不出来,这是我的见解,不知道是否正确,谢谢。

查看完整回答
1 反对 回复 2017-06-12
  • qq_那就好_2
    qq_那就好_2
    请问这个js效果是啥样子。我现在弄完成了!为啥和以前没啥区别
  • ExiaGo
    ExiaGo
    诶?我现在改的就是给每个 li 标签加了个蓝色框,你可以先注释掉 js ,再来观察。
?
习惯受伤

TA贡献885条经验 获得超1144个赞

把HTML中的id='ybl'改成id='menu'

查看完整回答
1 反对 回复 2017-06-11
?
qq_歲月靜好不忘初心_0

TA贡献38条经验 获得超6个赞

你换成方法绑定试试

查看完整回答
反对 回复 2017-06-11
?
忆昔何年

TA贡献1条经验 获得超0个赞

<div id="ybl">  
getElementById("menu")

这都不一样呀 得改改

查看完整回答
反对 回复 2017-06-11
  • 4 回答
  • 0 关注
  • 2220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信