如果这个问题已经提出,我道歉。我尝试了很多。但是没有成功。如果我的.div1
工作正常。但我删除了.div1
。控制台通过如下错误。怎么能解决这个问题。
未捕获的TypeError:无法读取属性' top'未定义的
HTML
<div class="div">Console error</div>
<!-- <div class="div1">Working</div>-->
<div class="div2">2</div>
JQuery的
function resize() {
var position= $('.div1').offset();
var top= position.top;
var newtop = top + 60 + "px";
$('.div2').css( {
'top': newtop
});
}
$(window).resize(function(){
resize();
});
window.onload = resize();
CSS
.div1
{
position:fixed;
top: 40px;
}
.div2
{
position:fixed;
}
答案 0 :(得分:4)
问题是因为您试图获取DOM中不存在的元素的offset()
,因此返回null
。然后,您尝试从导致错误的null
值中检索属性。
相反,在将值指定给top
时,您需要检查是否正确分配了position
。试试这个:
var top = position ? position.top : 0;
请注意,如果可用,这将设置为position.top
的值,否则将设置为0
。
答案 1 :(得分:2)
您需要测试选择器是否匹配任何内容。
function resize() {
var position= $('.div1').offset();
if (position) {
var top= position.top;
var newtop = top + 60 + "px";
$('.div2').css( {
'top': newtop
});
}
}
答案 2 :(得分:-1)
不要罢工
div with class="div1" ...
你的jquery是针对那个div。
<div class="div">Console error</div>
<div class="div1">Working</div>
<div class="div2">2</div>