Javascript 在关闭特定标记之前使用JS选择HTML标记
我想理解为什么我似乎无法将onscroll附加到包含DOM元素的变量Javascript 在关闭特定标记之前使用JS选择HTML标记,javascript,jquery,dom,getelementsbytagname,onscroll,Javascript,Jquery,Dom,Getelementsbytagname,Onscroll,我想理解为什么我似乎无法将onscroll附加到包含DOM元素的变量 <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> </head> <body> <div style="height: 1000px"></div> <script>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<div style="height: 1000px"></div>
<script>
$(document).ready(function() {
var vbody = document.getElementsByTagName('body');
vbody.onscroll = function() {
console.log('scrolling');
}
});
</script>
</body>
</html>
到
当您滚动时,控制台会记录“滚动”,就像它应该的那样
我做错了什么?我想向body元素添加一个onscroll事件处理程序,并使其功能与在示例中使用window.onscroll时类似
谢谢。以下代码提供了一个HTMLCollection
document.getElementsByTagName('body');
您需要使用:
$(document).ready(function() {
var vbody = document.getElementsByTagName('body')[0];
vbody.onscroll = function() {
console.log('scrolling');
}
});
或者,既然您使用的是jQuery,请继续使用它:
$(document).ready(function() {
$("body").scroll(function() {
console.log('scrolling');
});
});
Change
var vbody=document.getElementsByTagName('body')代码>
tovar vbody=document.getElementsByTagName('body')[0]代码>
您需要在[0]的末尾添加,因为document.getElementsByTagName('body')
返回一个数组,并且您需要body的单个实例。获取普通body元素更简单的方法是获取document.body
,而不是document.getElementsByTagName('body')[0]
@JeffreyWesterkamp-Nice。。。是的!:)一个HTMLCollection
不是数组!:)
$(document).ready(function() {
var vbody = document.getElementsByTagName('body')[0];
vbody.onscroll = function() {
console.log('scrolling');
}
});
$(document).ready(function() {
$("body").scroll(function() {
console.log('scrolling');
});
});