Forum Moderators: open
I"m using the following code to call a simple expand/collapse toggle function.
<p><a href="javascript:toggleMe('divID')">Title</a></p>
<div id="divID" style="display:none">
<p>blah blah blah</p>
</div>
It works fine in Safari (haven't tested IE yet) but in Firefox, clicking on the link prompts it to display a blank page with the word "true". The function executes OK on the main page, but can anyone tell me why FF does this? And if I can stop it? I've tried adding the statement target="_self" to the link attributes, but it makes no difference.
The following modification works just fine
<p><a href="javascript://" onclick="return toggleMe('divID')">Title</a></p>
<div id="divID" style="display:none">
<p>blah blah blah</p>
</div>
but it seems a bit redundant to use onclick in a link when href does the same thing.
[edited by: arachnoid at 7:54 pm (utc) on Aug. 22, 2008]
So you'd want to always return false from this function - which would allow you to use the link for non-Javascript clients so they can still access the content.
Try this.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Untitled</title>
<script type="text/javascript">
function toggleMe(a){
if (document.getElementById(a)) {
e=document.getElementById(a);
e.style.display=(e.style.display && (e.style.display=="none"))?"block":"none";
}
return false;
}
</script>
</head>
<body>
<p><a href="link-to-non-JS-support_page.html" onclick="return toggleMe('divID')">Title</a></p>
<p id="divID" style="display:none;">blah blah blah</p>
</body>
</html>
Thanks also for the "link-to-non-JS-support_page.html" suggestion. I assume then that onclick takes precedence over href?
Another quirk of this script is that if I use a CSS class to style the <div> that's expanded/collapsed, then initially it's necessary to click twice on the link to get the toggle to take effect. If I use an inline style declaration, the first click initiates the function so there's no need to click again. Do you know why using CSS should require a second click?