/    Sign up×
Community /Pin to ProfileBookmark

Please help me!

Is there anyone who can help me.
How do I get this menu to work?
What have I done wrong?

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
http://www.w3.org/TR/html4/loose.dtd“>
<html>
<head><script type=”text/javascript” src=”expandingMenu.js”></script>
<title>Untitled Document</title>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″>
</head>
<style type=”text/css”>
ul#menu {
width: 100px;
list-style-type: none;
border-top: solid 1px #b9a894;
margin: 0;
padding: 0;
}

ul#menu ol {
display: none;
text-align: right;
list-style-type: none;
margin: 0;
padding: 5px;
}

ul#menu li,
ul#menu a {
font-family: verdana, sans-serif;
font-size: 11px;
color: #785a3c;
}

ul#menu li {
border-bottom: solid 1px #b9a894;
line-height: 15px;
}

ul#menu ol li {
border-bottom: none;
}

ul#menu ol li:before {
content: “- “;
}

ul#menu a {
text-decoration: none;
outline: none;
}

ul#menu a:hover {
color: #539dbc;
}

ul#menu a.active {
color: #be5028;
}

</style>

<SCRIPT language=”JavaScript” TYPE=”TEXT/JAVASCRIPT”>

// Node Functions

if(!window.Node){
var Node = {ELEMENT_NODE : 1, TEXT_NODE : 3};
}

function checkNode(node, filter){
return (filter == null || node.nodeType == Node[filter] || node.nodeName.toUpperCase() == filter.toUpperCase());
}

function getChildren(node, filter){
var result = new Array();
var children = node.childNodes;
for(var i = 0; i < children.length; i++){
if(checkNode(children[i], filter)) result[result.length] = children[i];
}
return result;
}

function getChildrenByElement(node){
return getChildren(node, “ELEMENT_NODE”);
}

function getFirstChild(node, filter){
var child;
var children = node.childNodes;
for(var i = 0; i < children.length; i++){
child = children[i];
if(checkNode(child, filter)) return child;
}
return null;
}

function getFirstChildByText(node){
return getFirstChild(node, “TEXT_NODE”);
}

function getNextSibling(node, filter){
for(var sibling = node.nextSibling; sibling != null; sibling = sibling.nextSibling){
if(checkNode(sibling, filter)) return sibling;
}
return null;
}
function getNextSiblingByElement(node){
return getNextSibling(node, “ELEMENT_NODE”);
}

// Menu Functions & Properties

var activeMenu = null;

function showMenu() {
if(activeMenu){
activeMenu.className = “”;
getNextSiblingByElement(activeMenu).style.display = “none”;
}
if(this == activeMenu){
activeMenu = null;
} else {
this.className = “active”;
getNextSiblingByElement(this).style.display = “block”;
activeMenu = this;
}
return false;
}

function initMenu(){
var menus, menu, text, a, i;
menus = getChildrenByElement(document.getElementById(“menu”));
for(i = 0; i < menus.length; i++){
menu = menus[i];
text = getFirstChildByText(menu);
a = document.createElement(“a”);
menu.replaceChild(a, text);
a.appendChild(text);
a.href = “#”;
a.onclick = showMenu;
a.onfocus = function(){this.blur()};
}

</SCRIPT>
<body>
<ul id=”menu”>
<li>Menu Item 1
<ol>
<li><a href=”#”>Sub Item 1.1</a></li>
<li><a href=”#”>Sub Item 1.2</a></li>
<li><a href=”#”>Sub Item 1.3</a></li>
</ol>
</li>
<li>Menu Item 2
<ol>
<li><a href=”#”>Sub Item 2.1</a></li>
<li><a href=”#”>Sub Item 2.2</a></li>
<li><a href=”#”>Sub Item 2.3</a></li>
</ol>
</li>
<li>Menu Item 3
<ol>
<li><a href=”#”>Sub Item 3.1</a></li>
<li><a href=”#”>Sub Item 3.2</a></li>
<li><a href=”#”>Sub Item 3.3</a></li>
</ol>
</li>
<li>Menu Item 4
<ol>
<li><a href=”#”>Sub Item 4.1</a></li>
<li><a href=”#”>Sub Item 4.2</a></li>
<li><a href=”#”>Sub Item 4.3</a></li>
</ol>
</li>
<li>Menu Item 5
<ol>
<li><a href=”#”>Sub Item 5.1</a></li>
<li><a href=”#”>Sub Item 5.2</a></li>
<li><a href=”#”>Sub Item 5.3</a></li>
</ol>
</li>
</ul>
<p><div align=”center”>
<font face=”arial, helvetica” size”-2″>Free JavaScripts provided<br>
by <a href=”http://javascriptsource.com”>The JavaScript Source</a></font>
</div><p>
</body>
</html>

to post a comment
JavaScript

2 Comments(s)

Copy linkTweet thisAlerts:
@JMRKERJun 07.2011 — Two immediate problems.

  • 1. You neglected to include:

    <script type="text/javascript" src="expandingMenu.js"></script>


  • 2. You have an unmatch {} pair for the "initMenu()" function.
  • Copy linkTweet thisAlerts:
    @JMRKERJun 07.2011 — You must have copied incorrectly or didn't follow the instructions carefully enough ...

    The following works as from the original:
    <i>
    </i>&lt;html&gt;
    &lt;head&gt;
    &lt;title&gt;Menu&lt;/title&gt;
    &lt;style type="text/css"&gt;

    ul#menu {
    width: 100px;
    list-style-type: none;
    border-top: solid 1px #b9a894;
    margin: 0;
    padding: 0;
    }

    ul#menu ol {
    display: none;
    text-align: right;
    list-style-type: none;
    margin: 0;
    padding: 5px;
    }

    ul#menu li,
    ul#menu a {
    font-family: verdana, sans-serif;
    font-size: 11px;
    color: #785a3c;
    }

    ul#menu li {
    border-bottom: solid 1px #b9a894;
    line-height: 15px;
    }

    ul#menu ol li {
    border-bottom: none;
    }

    ul#menu ol li:before {
    content: "- ";
    }

    ul#menu a {
    text-decoration: none;
    outline: none;
    }

    ul#menu a:hover {
    color: #539dbc;
    }

    ul#menu a.active {
    color: #be5028;
    }
    &lt;/style&gt;

    &lt;script type="text/javascript"&gt;

    /* This script and many more are available free online at
    The JavaScript Source :: http://javascript.internet.com
    Created by: Travis Beckham :: http://www.squidfingers.com | http://www.podlob.com
    version date: 06/02/03 :: If want to use this code, feel free to do so,
    but please leave this message intact. (Travis Beckham) */

    // Node Functions

    if(!window.Node){
    var Node = {ELEMENT_NODE : 1, TEXT_NODE : 3};
    }

    function checkNode(node, filter){
    return (filter == null || node.nodeType == Node[filter] || node.nodeName.toUpperCase() == filter.toUpperCase());
    }

    function getChildren(node, filter){
    var result = new Array();
    var children = node.childNodes;
    for(var i = 0; i &lt; children.length; i++){
    if(checkNode(children[i], filter)) result[result.length] = children[i];
    }
    return result;
    }

    function getChildrenByElement(node){
    return getChildren(node, "ELEMENT_NODE");
    }

    function getFirstChild(node, filter){
    var child;
    var children = node.childNodes;
    for(var i = 0; i &lt; children.length; i++){
    child = children[i];
    if(checkNode(child, filter)) return child;
    }
    return null;
    }

    function getFirstChildByText(node){
    return getFirstChild(node, "TEXT_NODE");
    }

    function getNextSibling(node, filter){
    for(var sibling = node.nextSibling; sibling != null; sibling = sibling.nextSibling){
    if(checkNode(sibling, filter)) return sibling;
    }
    return null;
    }
    function getNextSiblingByElement(node){
    return getNextSibling(node, "ELEMENT_NODE");
    }

    // Menu Functions &amp; Properties

    var activeMenu = null;

    function showMenu() {
    if(activeMenu){
    activeMenu.className = "";
    getNextSiblingByElement(activeMenu).style.display = "none";
    }
    if(this == activeMenu){
    activeMenu = null;
    } else {
    this.className = "active";
    getNextSiblingByElement(this).style.display = "block";
    activeMenu = this;
    }
    return false;
    }

    function initMenu(){
    var menus, menu, text, a, i;
    menus = getChildrenByElement(document.getElementById("menu"));
    for(i = 0; i &lt; menus.length; i++){
    menu = menus[i];
    text = getFirstChildByText(menu);
    a = document.createElement("a");
    menu.replaceChild(a, text);
    a.appendChild(text);
    a.href = "#";
    a.onclick = showMenu;
    a.onfocus = function(){this.blur()};
    }
    }

    if(document.createElement) window.onload = initMenu;
    &lt;/script&gt;

    &lt;/head&gt;
    &lt;body&gt;

    &lt;ul id="menu"&gt;
    &lt;li&gt;Menu Item 1
    &lt;ol&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 1.1&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 1.2&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 1.3&lt;/a&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
    &lt;li&gt;Menu Item 2
    &lt;ol&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 2.1&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 2.2&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 2.3&lt;/a&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
    &lt;li&gt;Menu Item 3
    &lt;ol&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 3.1&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 3.2&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 3.3&lt;/a&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
    &lt;li&gt;Menu Item 4
    &lt;ol&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 4.1&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 4.2&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 4.3&lt;/a&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
    &lt;li&gt;Menu Item 5
    &lt;ol&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 5.1&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 5.2&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href="#"&gt;Sub Item 5.3&lt;/a&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
    &lt;/ul&gt;
    &lt;p&gt;&lt;div align="center"&gt;
    &lt;font face="arial, helvetica" size"-2"&gt;Free JavaScripts provided&lt;br&gt;
    by &lt;a href="http://javascriptsource.com"&gt;The JavaScript Source&lt;/a&gt;&lt;/font&gt;
    &lt;/div&gt;&lt;p&gt;

    &lt;/body&gt;
    &lt;/html&gt;


    BTW: It is a good idea to surround your script with [ code] and [ /code] tags (without the spaces)

    to make it easier for viewing and copying by other forum members.
    ×

    Success!

    Help @susa spread the word by sharing this article on Twitter...

    Tweet This
    Sign in
    Forgot password?
    Sign in with TwitchSign in with GithubCreate Account
    about: ({
    version: 0.1.9 BETA 5.19,
    whats_new: community page,
    up_next: more Davinci•003 tasks,
    coming_soon: events calendar,
    social: @webDeveloperHQ
    });

    legal: ({
    terms: of use,
    privacy: policy
    });
    changelog: (
    version: 0.1.9,
    notes: added community page

    version: 0.1.8,
    notes: added Davinci•003

    version: 0.1.7,
    notes: upvote answers to bounties

    version: 0.1.6,
    notes: article editor refresh
    )...
    recent_tips: (
    tipper: @AriseFacilitySolutions09,
    tipped: article
    amount: 1000 SATS,

    tipper: @Yussuf4331,
    tipped: article
    amount: 1000 SATS,

    tipper: @darkwebsites540,
    tipped: article
    amount: 10 SATS,
    )...