javascript在小提琴中工作,但不在自己的页面中(即使脚本位于底部)
我正在尝试复制,当向下滚动时,它会将条粘贴到顶部;但是有一件事我不能确定 为了尽可能使用最基本的方法,我希望避免文件之间的链接,因此在相同的html文件中包含所有内容,遵循以下结构:javascript在小提琴中工作,但不在自己的页面中(即使脚本位于底部),javascript,html,Javascript,Html,我正在尝试复制,当向下滚动时,它会将条粘贴到顶部;但是有一件事我不能确定 为了尽可能使用最基本的方法,我希望避免文件之间的链接,因此在相同的html文件中包含所有内容,遵循以下结构: <html> <head> <style> /* css here */ </style> </head> <body> <!-- html
<html>
<head>
<style>
/* css here */
</style>
</head>
<body>
<!-- html here -->
<script>
// javascript here
</script>
</body>
</html>
及
及
但是没有帮助
我遗漏了什么?将脚本更改为此应该可以解决问题
<script>
var myTop = document.getElementById('a8').offsetTop;
window.onscroll = function() {
var y = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
if (y >= myTop) {
a8.className = 'stick';
}
else {
a8.className = '';
}
};
</script>
var myTop=document.getElementById('a8').offsetTop;
window.onscroll=函数(){
变量y=(document.documentElement&&document.documentElement.scrollTop)| | document.body.scrollTop;
如果(y>=myTop){
a8.className=‘stick’;
}
否则{
a8.className='';
}
};
我最初的回答是错误的,与加载无关,但与窗口的属性有关。将脚本更改为此应该可以解决问题
<script>
var myTop = document.getElementById('a8').offsetTop;
window.onscroll = function() {
var y = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
if (y >= myTop) {
a8.className = 'stick';
}
else {
a8.className = '';
}
};
</script>
var myTop=document.getElementById('a8').offsetTop;
window.onscroll=函数(){
变量y=(document.documentElement&&document.documentElement.scrollTop)| | document.body.scrollTop;
如果(y>=myTop){
a8.className=‘stick’;
}
否则{
a8.className='';
}
};
我最初的回答是错误的,与加载无关,但与窗口的属性有关。我发现变量名
top
与最顶层的window.top不明确。因此,只需将其重命名为其他名称,如top1
即可解决问题
var top1 = document.getElementById('a8').offsetTop;
我发现变量名
top
与window.top不明确,window.top是最顶层的框架。因此,只需将其重命名为其他名称,如top1
即可解决问题
var top1 = document.getElementById('a8').offsetTop;
这是top变量的问题,但在另一种情况下,当页面加载完成后需要执行某些操作时,可以将脚本包装到函数中
document.addEventListener('DOMContentLoaded', function() {
// your code here
}, false);
这也会起作用
document.addEventListener('DOMContentLoaded', function() {
var top = document.getElementById('a8').offsetTop;
window.onscroll = function() {
var y = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
if (y >= top) {
a8.className = 'stick';
}
else {
a8.className = '';
}
};
}, false);
这是top变量的问题,但在另一种情况下,当页面加载完成后需要执行某些操作时,可以将脚本包装到函数中
document.addEventListener('DOMContentLoaded', function() {
// your code here
}, false);
这也会起作用
document.addEventListener('DOMContentLoaded', function() {
var top = document.getElementById('a8').offsetTop;
window.onscroll = function() {
var y = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
if (y >= top) {
a8.className = 'stick';
}
else {
a8.className = '';
}
};
}, false);
你有错误吗?因为在html文件中复制/粘贴代码是不可行的。如果您有任何扩展,可以尝试禁用扩展。没有错误。我在Chrome(我有很多扩展)和Firefox(我没有启用扩展)中试过。在任何情况下都不起作用。你是通过复制粘贴我的代码来获得粘性效果的吗,@robert?只要把整个东西包装在
window.onload=function(){…}代码>。我指的是里面的整个剧本。包括var代码>!您在文章中提到jQuery函数,但在代码中没有提到。在您的真实代码中是否有任何带有$
的代码?@IsmaelMiguel,正如我尝试的那样(请参阅问题中的最后一段代码),这正是我所做的。您有任何错误吗?因为在html文件中复制/粘贴代码是不可行的。如果您有任何扩展,可以尝试禁用扩展。没有错误。我在Chrome(我有很多扩展)和Firefox(我没有启用扩展)中试过。在任何情况下都不起作用。你是通过复制粘贴我的代码来获得粘性效果的吗,@robert?只要把整个东西包装在window.onload=function(){…}代码>。我指的是里面的整个剧本。包括var代码>!您在文章中提到jQuery函数,但在代码中没有提到。在您的真实代码中是否有任何带有$
的内容?@IsmaelMiguel,当我尝试这一点时(参见问题中的最后一段代码),这正是我所做的。很有趣!如果我将其复制到我的代码中,它确实有效!我上面贴的和你的有什么区别?@Nit0另一个版本(和小提琴)也能工作的原因是,当你在函数中的位置时,顶部的局部变量优先于windowUnterstood的属性。谢谢是的,这是因为我在我发布的ans中提到的top
var名称比您的编辑快了3分钟;D@S.Serp你有我的投票权,我不能给你奖牌。真有趣!如果我将其复制到我的代码中,它确实有效!我上面贴的和你的有什么区别?@Nit0另一个版本(和小提琴)也能工作的原因是,当你在函数中的位置时,顶部的局部变量优先于windowUnterstood的属性。谢谢是的,这是因为我在我发布的ans中提到的top
var名称比您的编辑快了3分钟;D@S.Serp你有我的投票权,我不能给你奖牌,就这样!谢谢现在我的问题是,这两个答案几乎同时出现,而且都是正确的,所以我不知道哪一个应该被接受……我的答案比@robert的编辑版本要早;D但没有问题,正如您所希望的那样。注意:我使用Chrome Inspect功能发现了问题,并在函数中添加了一个断点。在那里,我看到在if
条件下,var top是一个对象而不是一个数字!就这样!谢谢现在我的问题是,这两个答案几乎同时出现,而且都是正确的,所以我不知道哪一个应该被接受……我的答案比@robert的编辑版本要早;D但没有问题,正如您所希望的那样。注意:我使用Chrome Inspect功能发现了问题,并在函数中添加了一个断点。在那里,我看到在if
条件下,var top是一个对象而不是一个数字!