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

老师你确定offset和top相加是一个数字而不是字符串吗?

在if判断中h和h0判断并没有得到相应的效果把

正在回答

5 回答

好贴必须顶

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

Scott丶 提问者

哈哈 我已经工作很久了 能力也算比较强了 有问题可以问我
2016-05-30 回复 有任何疑惑可以回复我~

有个地方输入错误:if (h < h0){......} 判断就变成了if(70>h0){......}

现在改过来是这样:if (h < h0){......} 判断就变成了if(70<h0){......}

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

楼主厉害,能看到这一点,也是挺厉害的。老师代码确实是错了,只不过错的地方是:

首先,var y = this.getElementsByTagName("div")[0].offsetHeight;

这个语句是有效的,返回值是整形70;

再次,var h = this.getElementsByTagName("div")[0].style.top + y;

这个语句有错误,因为this.getElementsByTagName("div")[0].style.top无法获取其top值,没有返回值(你可以用alert测试下);而+ y 以后,返回值是y的值,最后得出h等于70(同样可以alert一下);

然后,if (h < h0){......} 判断就变成了if(70>h0){......},而不是老师本意:div框距离顶部的距离加上本身的高度,是否小于h0;

最后,因为h的值是70,所以if(h<h0)仍然成立所以继续执行{this.getElementsByTagName("div")[0].style.top = h0 + "px";},所以最后 div 框的top 仍然变成了 h0 即 192px;


改正代码:

将:   var h = this.getElementsByTagName("div")[0].style.top + y;

改为:var h = this.getElementsByTagName("div")[0].offsetTop + y;


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

自己测试了下 感觉代码有点错。。。

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

这两个offset和top的概念没理解明白


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

举报

0/150
提交
取消

老师你确定offset和top相加是一个数字而不是字符串吗?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号