简体   繁体   English

显示事业部ID上滚动

[英]Showing Div ID on Scroll

I have this JS code that in a popup box shows the id value of the div when scrolling past it. 我有这个JS代码,在弹出框中滚动时显示div的id值。 It works fine when the id looks like this: id="1". 当id如下所示时,它可以正常工作:id =“ 1”。 But how can I change it to detect an id that looks like this: id="1:1" or id="23:4"? 但是,如何更改它以检测如下所示的ID:id =“ 1:1”或id =“ 23:4”? Two numbers separated by a colon. 用冒号分隔的两个数字。

<div id="sayverse"></div>
<div id="1">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque et facilisis elit. Ut interdum, odio et aliquam tempor, felis odio auctor erat, eget elementum lectus arcu tempus elit.</div>

<div id="2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque et facilisis elit. Ut interdum, odio et aliquam tempor, felis odio auctor erat, eget elementum lectus arcu tempus elit.</div>

function findPosition( oElement ) { 
    if( typeof( oElement.offsetParent ) != 'undefined' ) { 
      for( var posX = 0, posY = 0; oElement; oElement = oElement.offsetParent ) { 
      posX += oElement.offsetLeft; posY += oElement.offsetTop; } 
      return [ posX, posY ]; 
    } else { 
      return [ oElement.x, oElement.y ]; 
  } 
}

function functionThatSetsPosition() {
var scrolledFromTop = getScrollXY()[1];
var topposition, lastone, offsetFromTop, currentverse, firstVerse = 1;
while(!document.getElementById('vs'+firstVerse) && firstVerse < 10000) {
    firstVerse++;
}
for(var i = firstVerse, onediv; onediv = document.getElementById('vs'+i); i++) {
    topposition = findPosition(onediv)[1];
    offsetFromTop = topposition - scrolledFromTop;
    if( i == firstVerse && offsetFromTop >= 0 ) {

        currentverse = i;
        break;
    }
    if( offsetFromTop >= 0 && offsetFromTop <= 20 ) {

        currentverse = i;
        break;
    }
    if( offsetFromTop > 20 ) {

        currentverse = lastone;
        break;
    }
    //store this as the last one for checking afterwards
    lastone = i;
}
if( !currentverse ) {
    currentverse = lastone;
}
document.getElementById('sayverse').innerHTML = 'Verse '+currentverse;

} }

Philip 菲利浦

I'm assuming you're trying to detect the position of the element to determine the second value (the number after the :). 我假设您正在尝试检测元素的位置以确定第二个值(:之后的数字)。

If that second number is your variable called offsetFromTop, then it could be added like so: 如果第二个数字是名为offsetFromTop的变量,则可以这样添加它:

document.getElementById('sayverse').innerHTML = 'Verse ' + currentverse + ':' + offsetFromTop;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM