-1

I want it to display "you" under "Home" when hovering and disappearing when mouse leaving:

// HTML
<ul>
<li><a id="homeBox" href="#">Home</a>
<ul><li><a id="homeSub" href="#">you</a></li></ul>
</li>
</ul>

// javaScript
var homeB= document.getElementById("homeBox");
var homeS = document.getElementById("homeSub")
homeBox.mouseover = function() {
    var homeS = document.getElementById("homeSub").style.display= "block";
}
homeBox.mouseleave = function() {
    var homeS = document.getElementById("homeSub").style.display= "none";
}
// CSS
<style>
    ul li ul li a #homeSub {display: hidden;}
</style>
Marie Mirbekian
  • 183
  • 1
  • 2
  • 9

4 Answers4

1

Why Javascript? Use simple CSS Solution.

  ul li ul{display: none;}
  ul li:hover ul{display: block;}

DEMO

Suresh Ponnukalai
  • 13,820
  • 5
  • 34
  • 54
0

There were quite a few issues. If you have any questions let me know

homeBox.mouseover

There is no homeBox use homeB, and mouseover isnt an event handler onmouseover is.

homeB.onmouseover

ul li ul li a #homeSub {display: hidden;}

This is looking for a link with a child that has the id homeSub, and display: hidden should be display: none

ul li ul li a#homeSub {display: none;}

var homeS = document.getElementById("homeSub").style.display= "block";

You've already defined homeS

homeS.style.display = 'block';

var homeB = document.getElementById("homeBox");
var homeS = document.getElementById("homeSub");
homeB.onmouseover = function() {
    homeS.style.display = "block";
}
homeB.onmouseout = function() {
    homeS.style.display = "none";
}
ul li ul li a#homeSub {
    display: none;
}
<ul>
<li><a id="homeBox" href="#">Home</a>
<ul><li><a id="homeSub" href="#">you</a></li></ul>
</li>
</ul>
0
<ul>
<li><a id="homeBox" href="#">Home</a>
<ul><li><a id="homeSub" href="#">you</a></li></ul>
</li>
</ul>

-Use onmouseover instead of mouseover

-Put your Javascript between script-tags, and in a function that will execute after the page has loaded (and use 'none' instead of 'hidden').

<script>
(function() {
    var homeB= document.getElementById("homeBox");

    var homeS = document.getElementById("homeSub");

    homeB.onmouseover = function() {
        homeS.style.display = "block";
    }
    homeB.onmouseleave = function() {
        homeS.style.display= "none";
    }
})();
</script>

-And adjust your stylesheet:

<style>
    #homeSub {display: none;}
</style>
Linkmichiel
  • 2,110
  • 4
  • 23
  • 27
0

You don't need any javascript for this functionality. Just use CSS - http://jsfiddle.net/akq1e5o6/

P.S.: there is no avaliable hidden value for display property

Philip Dernovoy
  • 1,169
  • 6
  • 17