PDA

View Full Version : document.getElementById crashing



gib65
03-14-2012, 02:42 PM
Hello,

I have a website that I need help with. You can visit it here: http://www.shahspace.com/bow/home.html. To see what I need help with, click on the services menu item and observe the alert message that comes up. It should say "point 1".

Here is the code that executes that:



function enableScrolling(menuName)
{
alert("point 1");
var menu = document.getElemenetById(menuName);
alert("point 2");
...
}


As you can see, there should be a second alert message that says "point 2", but there isn't. The script is crash when I try to assign to menu the object returned by document.getElementById(menuName). I have verified that menuName is correct. So why would this be crashing?

To get a fuller understanding of my algorithm, I'll give you the following:

The menu div:


<div id="services_menu" class="services_menu">
...
</div>


The "services" button:


<td><a href="#" onclick="displayMenu('services'); return false;"><img src="services.jpg" border=0></a></td>


The displayMenu() function:


function displayMenu(menu)
{
var menuName = menu + "_menu";
document.getElementById(menuName).style.display = "block";

if (itemCount(menuName) >= 12)
{
enableScrolling(menuName);
}
else
{
disableScrolling(menuName);
}
}


The itemCount() function:


function itemCount(menuName)
{
var menu = document.getElementById(menuName);
var divArray = menu.getElementsByTagName("div");
return divArray.length;
}


And the enableScrolling() function I already posted above.

So essentially, when the user clicks on "service", the services menu becomes visible. If the menu contains 12 items or more, scrolling needs to be enabled. This entails setting the menu to a fixed height and allowing the user to scroll through it (scrolling, in this case, will be customized--I'm not using the div's native scrolling feature).

The really odd thing is that in itemCount(), I have exactly the same line:

var menu = document.getElementById(menuName);

and it works fine there. Why not in my enableScrolling() function?

jscheuer1
03-14-2012, 05:09 PM
Typo (extra e in getElementById):



function enableScrolling(menuName)
{
alert("point 1");
var menu = document.getElemenetById(menuName);
alert("point 2");
...
}

keyboard
03-14-2012, 09:15 PM
Doesn't this code



var menu = document.getElemenetById(menuName);


try and use getelementbyid on the variable menuName.

Shouldn't it be



var menu = document.getElemenetById("menuName");


P.s. I'm pretty sure thats how you spell it John. Why did you bring that up???

gib65
03-14-2012, 09:33 PM
Typo (extra e in getElementById):

:eek: :o

It seems it takes a second pair of eyes to catch those mistakes. Even the first pair has scanned it over and over again. :D

jscheuer1
03-14-2012, 09:33 PM
Doesn't this code



var menu = document.getElemenetById(menuName);


try and use getelementbyid on the variable menuName.

Shouldn't it be



var menu = document.getElemenetById("menuName");


P.s. I'm pretty sure thats how you spell it John. Why did you bring that up???

No you don't need to quote it, it's already a variable representing a string.

And I brought it up - the spelling, because gib65 spelled it incorrectly, with an extra e. It should be:

getElementById

Not:

getElemenetById

as gib65 has it in the enableScrolling function, and as you copied it to your post where it's also spelled incorrectly in your code blocks.

keyboard
03-14-2012, 09:49 PM
Ahhh, that makes more sense.