Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在关闭特定标记之前使用JS选择HTML标记_Javascript_Jquery_Dom_Getelementsbytagname_Onscroll - Fatal编程技术网

Javascript 在关闭特定标记之前使用JS选择HTML标记

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>

我想理解为什么我似乎无法将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>
  $(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')

to
var 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');
  });
});