Javascript 在滚动期间抓取Div id时为空
我试图在滚动期间获取一个div的id,这样我就可以触发一个GA事件来跟踪谁正在滚动到站点的哪个部分。下面是我正在使用的.js代码:Javascript 在滚动期间抓取Div id时为空,javascript,jquery,scroll,Javascript,Jquery,Scroll,我试图在滚动期间获取一个div的id,这样我就可以触发一个GA事件来跟踪谁正在滚动到站点的哪个部分。下面是我正在使用的.js代码: function scrollDetect(){ var triggerPoint= Math.round($(window).height() / 2); var sections = document.getElementsByClassName("section"); var triggered
function scrollDetect(){
var triggerPoint= Math.round($(window).height() / 2);
var sections = document.getElementsByClassName("section");
var triggeredSectionArray = [];
for(var i = 0; i < sections.length; i++){
triggeredSectionArray[i] = true;
}
$(document).scroll(function(){
for(var i = 0; i < sections.length; i++){
if(($(sections[i]).offset().top-$(window).scrollTop()) < triggerPoint && triggeredSectionArray[i] != false){
var tempElem = sections[i];
alert(sections[i].id);
triggeredSectionArray[i] = false;
}
}});
}
scrollDetect在body load时被调用,它检测div的顶部何时超过触发点我仍在决定我希望该触发点是什么,但id本身是一个空字符串。所有div都在标记中明确定义了id,当我尝试设置id时,它也会这样做。确保文档以:开头,以便jQuery可以正确计算窗口的高度,并尝试以下操作:
$(window).load(function() {
$(window).scroll(function(){
var top = $(window).scrollTop();
var bottom = top + $(window).height();
$(".section").each(function() {
if ($(this).offset().top >= top && $(this).offset().top <= bottom) {
console.log($(this).attr('id')); //Change this to GA tasks
}
});
});
});
html看起来像是什么?JSFIDLE真的很有用,不管怎样,我明白了。div是嵌套的,孩子有id,而不是section。我投票结束这个问题,因为OP在评论中说他已经解决了这个问题。