webForumDet fria alternativet

Visa, utan att klicka

2 svar · 188 visningar · startad av streetrobban

streetrobbanMedlem sedan jan. 20011 140 inlägg
#1

Hejsan,

Jag har klassisk trädmeny där man klickar på en rubrik för att få underliggande menyval utfällda under rubriken. Varje gång sidan laddas om så laddas även menyn om, och då läggs undermenyerna dolt under sina rubriker. Jag vill nu som default visa undermenyerna till EN rubrik, inte till alla. Men får det inte att fungera. Här kommer lite kod.

echo "<div class=menutitle onClick=\"SwitchMenu('sub".$i."')\" style=\"background-color: $bg;\">";
echo "<a href=\"#\" onClick=\"selectLink('button_".$i."_');\" onMouseover=\"rollIn('button_".$i."_');\" onMouseout=\"rollOut('button_".$i."_');\"><img src=\"img/icon_arrow_admin_dn.gif\" border=0 name=\"button_".$i."_\">$name</a>";
echo "</div>";

echo "<span class=submenu id=\"sub".$i."\" style=\"background-color: $bg;\">";

echo "<table border=0 width=100% height= cellspacing=0 cellpadding=0 style=\"padding: 0px;\">";
echo "<tbody>";

// Hämta undermenyerna
$get2 = mysql_query("SELECT * FROM submenu WHERE id_menu = '$id' AND public = '1' ORDER BY place, name");
while($row = mysql_fetch_array($get2))
{
	$s_id = $row['id'];
	$s_name = $row['name'];
	$s_id_article = $row['id_article'];
	$s_id_menu = $row['id_menu'];
	$s_place = $row['place'];
	$s_time_added = $row['time_added'];
	$s_date_added = $row['date_added'];
	$s_internal = $row['internal'];
	$s_public = $row['public'];

	if ($s_id == $_SESSION['id_page'])
	{
		echo "<tr>";
		echo "<td width=100% style=\"padding-left: 10px; padding-right: 10px;\">";
		echo "<a href=redirect.php?page=submenu&id=$s_id><b>$s_name</b></a><br/>";
		echo "</td>";
		echo "</tr>";
	}
	else
	{
		echo "<tr>";
		echo "<td width=100% style=\"padding-left: 10px; padding-right: 10px;\">";
		echo "<a href=redirect.php?page=submenu&id=$s_id>$s_name</a><br/>";
		echo "</td>";
		echo "</tr>";
	}
}

echo "</tbody>";
echo "</table>";
echo "</span>";

Här följer även JavaScriptet som fäller ut undermenyn när man klickar på rubriken.

<script type="text/javascript">
/***********************************************
* Switch Menu script- by Martial B of [url]http://getElementById.com/[/url]
* Modified by Dynamic Drive for format & NS4/IE4 compatibility
* Visit [url]http://www.dynamicdrive.com/[/url] for full source code
***********************************************/

var persistmenu="yes" //"yes" or "no". Make sure each SPAN content contains an incrementing ID starting at 1 (id="sub1", id="sub2", etc)
var persisttype="sitewide" //enter "sitewide" for menu to persist across site, "local" for this page only

if (document.getElementById){ //DynamicDrive.com change
document.write('<style type="text/css">\n')
document.write('.submenu{display: none;}\n')
document.write('</style>\n')
}

function SwitchMenu(obj){
	if(document.getElementById){
	var el = document.getElementById(obj);
	var ar = document.getElementById("masterdiv").getElementsByTagName("span"); //DynamicDrive.com change
		if(el.style.display != "block"){ //DynamicDrive.com change
			for (var i=0; i<ar.length; i++){
				if (ar[i].className=="submenu") //DynamicDrive.com change
				ar[i].style.display = "none";
			}
			el.style.display = "block";
		}else{
			el.style.display = "none";
		}
	}
}

function get_cookie(Name) { 
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) { 
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}

function onloadfunction(){
if (persistmenu=="yes"){
var cookiename=(persisttype=="sitewide")? "switchmenu" : window.location.pathname
var cookievalue=get_cookie(cookiename)
if (cookievalue!="")
document.getElementById(cookievalue).style.display="block"
}
}

function savemenustate(){
var inc=1, blockid=""
while (document.getElementById("sub"+inc)){
if (document.getElementById("sub"+inc).style.display=="block"){
blockid="sub"+inc
break
}
inc++
}
var cookiename=(persisttype=="sitewide")? "switchmenu" : window.location.pathname
var cookievalue=(persisttype=="sitewide")? blockid+";path=/" : blockid
document.cookie=cookiename+"="+cookievalue
}

if (window.addEventListener)
window.addEventListener("load", onloadfunction, false)
else if (window.attachEvent)
window.attachEvent("onload", onloadfunction)
else if (document.getElementById)
window.onload=onloadfunction

if (persistmenu=="yes" && document.getElementById)
window.onunload=savemenustate
</script>

<script type="text/javascript">
function showhide(id){
    var lref=document.getElementById(id).style;
    lref.display=(lref.display=='none')?'':'none';
}
</script>

Ps. Jag vet inte om den här tråden hör hemma under JavaScript mer... Ds.

Danne VMedlem sedan aug. 20068 090 inlägg
#2

Du menar som t.ex. den här:
http://code.gosu.pl/dl/mygosuMenu/demo/1.3/example2.html
?
Den stannar kvar i det utfällda läge du råkar ha när du byter sida.
"mygosuMenu" här http://code.gosu.pl/

streetrobbanMedlem sedan jan. 20011 140 inlägg
#3

Ja precis, det är något liknande jag har idag. Fast detta verkar inte funka när man laddar om sidan. På varje sida inkluderar jag koden för JavaScriptet från en fil, och koden för meyn från en annan fil. Men detta ska väl inte vara till något problem?

Jag ska kolla närme på menyn du visade, och se om det funkar. Tack så länge :)

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)