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

Uncaught TypeError: Cannot read property 'style' of null, 是什么情况?

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"><!-- 为了兼容IE -->
<title>js实现搜索框下拉功能</title>
<style type="text/css">
body, ul, li, div, form,input{margin:0; padding:0;}
body{background-color: #333;}
.bg_div{
background-image: url(images/river.jpg); 
width:1366px; height:690px;
margin:0 auto;
position: relative;
}
.logo{
background-image: url(images/logo.png);
width:107px; height: 53px;
float: left;
margin-right: 15px;
margin-top: -10px; /*设置负值往反方向移动*/
}
form{
float: left; 
background-color: #fff;

}
input{
border: 0; 
outline:none;/*去掉chrome下点击输入框时高亮颜色*/
}
.search_input_text{
width: 350px;
height: 38px;
line-height: 38px;
float: left;
padding: 0 5px;
}
.search_input_button{
background: url(images/search_button.png) center center no-repeat;
width: 38px;
height: 38px;
line-height: 38px;
float: left;
cursor: pointer; /*光标移到按钮时变为“小手”形状*/
}
.search_box{
position: absolute;
top: 200px;
left: 200px;
}
.suggest ul{
width: 396px;
border: 1px solid #999;
background: #fff;
position: absolute;
top: 238px;
left: 322px;
}
.suggest li{
padding: 3px;
list-style-type: none;
line-height: 25px;
}
.suggest li:hover{
text-decoration: underline;
background-color: #ccc;
cursor: pointer;
}
</style>
</head>
<body>
<div>
<div>
<div></div>
<form  id="search_form" >
<input type="text" id="search_input" />
<input type="submit" value="" />
</form>
</div>
<div id="search_suggest" style="display: none;">
<ul id="search_result">
<li>搜索结果1</li>
<li>搜索结果2</li>
<li>搜索结果3</li>
</ul>
</div>
</div>
<script type="text/javascript">
// 先封装几个常用的函数
var getDOM = function (id) {
return document.getElementById('id');
};
var addEvent = function (id, event, fn) {
var el = getDOM(id)||document;
if(el.addEventListener){//非IE浏览器
el.addEventListener(event, fn, false);
}else if(el.attachEvent){//IE浏览器
el.attachEvent('on'+event, fn);
}
};
// 获取输入框的位置
var getElementLeft = function(element) {//获取距离浏览器左边的距离
var actualLeft = element.offsetLeft;//获取距离父元素左边的距离
var current = element.offsetParent;
while(current!== null){
actualLeft += current.offsetLeft;
current = current.offsetParent;
}
return actualLeft;
};
var getElementTop = function(element) {//获取距离浏览器顶部的距离
var actualTop = element.offsetTop;
var current = element.offsetParent;
while(current!== null){
actualTop += current.offsetTop;
current = current.offsetParent;
}
return actualTop;
};//至此已封装完毕

addEvent('search_input', 'keyup', function(){
getDOM('search_suggest').style.top = getElementTop(getDOM('search_form'))+ 38 +'px';
getDOM('search_suggest').style.left = getElementLeft(getDOM('search_form'))+'px';
getDOM('search_suggest').style.position = 'absolute';
getDOM('search_suggest').style.display = 'block';
});
</script>
</body>
</html>

自己看了半天都没有找出来错误在哪里啊?

正在回答

3 回答

有没有完整的代码资源,可以给一个链接地址吗?

0 回复 有任何疑惑可以回复我~

我居然还看了一会JS

<div>

<div>

<div></div>

<form  id="search_form" >

<input type="text" id="search_input" />

<input type="submit" value="" />

</form>

</div>

<div id="search_suggest" style="display: none;">

<ul id="search_result">

<li>搜索结果1</li>

<li>搜索结果2</li>

<li>搜索结果3</li>

</ul>

</div>

</div>

你结构上的class呢?没写你就设置样式了......

0 回复 有任何疑惑可以回复我~
#1

慕瓜3177915

啥意思 没懂
2016-09-21 回复 有任何疑惑可以回复我~

自已alert一下访问style属性的那个元素,那个元素实际上取的是空值,可能是你函数封装没封装好或者获取的时候获取了一个不存在的元素,代码太长就懒得看了OTZ

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
搜索框制作
  • 参与学习       66041    人
  • 解答问题       431    个

本课程从简入深讲解搜索框的制作,学习JQ与JS实现Ajax技术的不同点

进入课程

Uncaught TypeError: Cannot read property 'style' of null, 是什么情况?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信