# Long javascript question

**URL:** https://boards.straightdope.com/t/long-javascript-question/408325
**Category:** Factual Questions
**Created:** [June 17, 2007, 3:21am UTC](https://boards.straightdope.com/t/long-javascript-question/408325 "2007-06-17T03:21:25Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![Eonwe](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/eonwe/32/240_2.png) [@Eonwe](https://boards.straightdope.com/u/Eonwe)
#### Post date: [June 17, 2007, 3:21am UTC](https://boards.straightdope.com/t/long-javascript-question/408325/1 "2007-06-17T03:21:25Z")

</div>

Hey all. I’m working on a project, and am having a hard time figuring out an issue.

Basically, I’ve got some code that enables me to have a scrolling block of text embedded in the middle of my page, that scrolls on a mouseover of a buton.

It works fine, except when I add a particular \<div\> elsewhere in the page, at which point, in Firefox, the buttons stop functioning (though they still work in IE7).

First, a summary of the \<div\> structure of the page, along with javascript:

```auto

<body>
<div id="master">
    <div id="contactinfo"></div> // THIS IS THE OFFENDING DIV
    <div id="header"></div>
    <div id="header_menu"></div>
    <div id="main">
    <script type="text/javascript">
        iens6=document.all||document.getElementById
        ns4=document.layers
        
        //Handles Internet Explorer 5.5-6 -- doesn't use .PNG for border
        version=0
        if (navigator.appVersion.indexOf("MSIE")!=-1){
          temp=navigator.appVersion.split("MSIE")
          version=parseFloat(temp[1])
        }

        if (version>=5.5 && version<7.0) //NON IE browser will return 0
        {
          //specify speed of scroll (greater=faster)
          var speed=2
          if (iens6){
            document.write('<div id="container" style="position:relative;top:40px;left:30px;width:445px;height:289px;z-index:-2;border:2px solid #CCC;overflow:hidden">')
            document.write('<div id="content" style="position:absolute;width:440px;height:289px;left:0;top:0;padding-top:13px;z-index:-10">')
          }
        } else {
          //specify speed of scroll (greater=faster)
          var speed=2
          if (iens6){
            document.write('<div id="container" style="position:relative;top:40px;left:30px;width:445px;height:289px;z-index:0-2;border:none;overflow:hidden"><img src="images/main_border.png">')
            document.write('<div id="content" style="position:absolute;width:440px;height:989px;left:0;top:0;padding-top:13px;z-index:-10">')
          }
        }
    </script>

        <ilayer name="nscontainer">
        <layer name="nscontent">
            <!-- SCROLLABLE CONTENT GOES HERE -->
        </layer>
        </ilayer>

    <script language="JavaScript1.2">
        if (iens6)
        document.write('</div></div>')
    </script>

        <div id="buttons">
            <a href="#" onMouseover="moveup()" onmouseout="clearTimeout(moveupvar)"><img src="uparrow.jpg"></a>
            <a href="#" onMouseover="movedown()" onMouseout="clearTimeout(movedownvar)"><img src="downarrow.jpg"></a>
        </div>

        <script language="JavaScript1.2">
          if (iens6){
            var crossobj=document.getElementById? document.getElementById("content") : document.all.content
var contentheight=crossobj.offsetHeight
          } else if (ns4){
            var crossobj=document.nscontainer.document.nscontent
var contentheight=crossobj.clip.height
          }

          function movedown(){
            if (iens6&&parseInt(crossobj.style.top)>=(contentheight*(-1)+100))
              crossobj.style.top=parseInt(crossobj.style.top)-speed+"px"
            else if (ns4&&crossobj.top>=(contentheight*(-1)+100))
              crossobj.top-=speed
              movedownvar=setTimeout("movedown()",20)
          }

          function moveup(){
            if (iens6&&parseInt(crossobj.style.top)<=0)
              crossobj.style.top=parseInt(crossobj.style.top)+speed+"px"
            else if (ns4&&crossobj.top<=0)
              crossobj.top+=speed
              moveupvar=setTimeout("moveup()",20)

          }

          function getcontent_height(){
            if (iens6)
              contentheight=crossobj.offsetHeight
            else if (ns4)
              document.nscontainer.document.nscontent.visibility="show"
          }
          window.onload=getcontent_height
        </script>

```

As you can (hopefully) see, there’s a bunch of javascript that does the following:

[list]  
[li]Identifies the browser; if it’s IE 5.5/6, it draws two \<div\>s to hold the scrolling content, using div borders; if it’s not those browsers, it draws the same \<div\>s but uses a PNG image for the border[/li][li]Grabs the \<div\> id’d as “content” (or the layer “nscontent”), gets the height of said container (window.onload), and uses it in the functions used to scroll the text up and down.[/li]  
It worked fine, until I added the \<div\> with the red comment.

I’m really not sure at all what the div is doing to disrupt the code; it’s set pretty much out of the flow of everything else.

If I move the \<div\> above the \<div id=“master”\> div, it works as well, but gives me another whole mess of formatting problems.

I’m expecting this to sink like a rock, but if anyone who codes has a bout of insomnia tonight and feels like tackling this, it’d be much appreciated.

Oh, the page I’m working on can be found [here](http://www.natevenet.com/dmpc/test4.php#).

---

<div class="post-metadata">

### Author: ![Sxyzzx](https://avatars.discourse-cdn.com/v4/letter/s/258eb7/32.png) [@Sxyzzx](https://boards.straightdope.com/u/Sxyzzx)
#### Post date: [June 17, 2007, 4:41am UTC](https://boards.straightdope.com/t/long-javascript-question/408325/2 "2007-06-17T04:41:48Z")

</div>

Your contactinfo div has a z-index of 100, putting it (including, apparently, its 547px top margin) in front of the other elements on the page, so the mouseover events don’t reach the buttons.

---

<div class="post-metadata">

### Author: ![Eonwe](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/eonwe/32/240_2.png) [@Eonwe](https://boards.straightdope.com/u/Eonwe)
#### Post date: [June 17, 2007, 1:56pm UTC](https://boards.straightdope.com/t/long-javascript-question/408325/3 "2007-06-17T13:56:37Z")

</div>

[QUOTE=Sxyzzx]  
Your contactinfo div has a z-index of 100, putting it (including, apparently, its 547px top margin) in front of the other elements on the page, so the mouseover events don’t reach the buttons.  
[/QUOTE]

Thanks! My brain had hit a problem-solving wall, and at least some of my div-based layouts end up being quite a bit of trial-and-error.
