webForumDet fria alternativet

Tips på förbättring

JavaScript

0 svar · 298 visningar · startad av yador

Medlem sedan mars 2004455 inlägg
Frågan#1

Hejsan!
Om jag visar denna koden:

var menydata = new Array();
menydata[0] = {text: "Start", title: "Går tillbaka till startsidan!",href:"index.html"}
menydata[1] = {text: "Börja träna", title: "Om du vill börja träna tennis så kolla här.",href:"borjatrana.html"}
menydata[3] = {text: "Träningstider", title: "Våra träningstider visas på denna sida",href:"traningstider.html"}
menydata[4] = {text: "Galleri", title: "Våra bilder",href:"galleri.html"}
menydata[5] = {text: "Resultat", title: "Resultaten av matcher som har spelats",href:"resultat.html"}
menydata[6] = {text: "Aktuellt", title: "Vad som är aktuellt just nu",href:"aktuellt.html"}
menydata[7] = {text: "Kalender", title: "Vår kalender, där visas bland annat kommande matcher, tävlingar som ska vara!",href:"kalender.html",data: " style=\"margin-top:30px;\""}
menydata[8] = {text: "Om oss", title: "Lite kort histrorik om oss, när vi startade och hur många medlemmar vi har idag.",href:"omoss.html"}
menydata[9] = {text: "Kontakt", title: "Hur du kontaktar oss.",href:"kontakt.html"}

function createMeny(a,oldata,lidata)
{
	var m = "<ol" + ((oldata)?oldata:"") + ">";
	for(var i in a)
	{
		if(document.location.toString().indexOf(a[i].href) > -1){
			add = true;
				if(a[i].data)
					if(a[i].data.indexOf("style=\"")){
						a[i].data = a[i].data.replace("style=\"","style=\"color:#f00;");
						add=false;
						}
			if(add)
				a[i].data += " style=\"color:#f00;\"";
		}
		m += "<li" + ((lidata)?lidata:"") +"><a href=\"" + a[i].href + "\" title=\"" + a[i].title + "\"" + ((a[i].data)?a[i].data:"") + ">" + a[i].text + "</a></li>";
		if(a[i].submeny)
			m += createMeny(a[i].submeny,a[i].oldata,a[i].lidata);
	}
	m += "</ol>";
	return m;
}	

function getMeny()
{
	m="";
	m+= createMeny(menydata) + "<div class=\"submeny\">";
	logo = "include/images/small/logo.gif";
	m += "<a href=\"" + logo.replace("small","larger") + "\"><img src=\"" + logo + "\"></a></div>";
	return m;
}

function getWindowX()
{
	width = 0;
	if(typeof(window.innerWidth) == 'number' )
		width = window.innerWidth;
	else if(document.documentElement.clientWidth)
		width = document.documentElement.clientWidth;
	else if(document.body.clientWidth)
		width = document.body.clientWidth;
	return width;
}

function setCss() { document.getElementById("infobox").style.width = getWindowX()-190+"px"; }

var OnLoad = new Array();
var OnResize = new Array();

OnResize[0] = new Function("setCss();");
OnLoad[0] = new Function("document.getElementById(\"meny\").innerHTML = getMeny();setCss();");
OnLoad[1] = new Function("document.getElementById(\"header\").innerHTML = \"<h1>Logga här</h1>\";");

with(window){
	onresize = function()
	{
		for(var i in OnResize)
			OnResize[i]();
	}
	onload = function()
	{
		for(var i in OnLoad)
			OnLoad[i]();
	}
}

Och koden på den sidan jag vill t ex ha en undermeny:

var meny = Array();
meny[0] = {text: "Om tennis", title: "Lite information om tennis",href:"omtennis.html"}
meny[1] = {text: "Kostnad - priser", title: "Hur myket det kostar att träna hos oss.",href:"kostnad.html"}

menydata[1].lidata = "";
menydata[1].oldata = " style=\"border:1px solid #000;border-left:none;\"";
menydata[1].submeny = meny;

Kan man förbättra den på något sätt utan att behöva skriva särskilt mycket mer kod? Eller är den redan så gått som kompakt den kan vara?

Obs, säg till om jag behöver uppge mer kod.

Tack på förhand!

269 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)