webForumDet fria alternativet

'id' är null eller inte ett objekt

4 svar · 479 visningar · startad av jockooono

jockooonoMedlem sedan mars 200561 inlägg
#1

Är inte världsmästare på javascript, men jag har ett script som öppnar en bild i ett nytt fönster och sätter fönsterstorleken efter bilden. Detta script fungerar fint på en hemsida,
men när jag kopierar över den exakta koden till en annan hemsida fungear det inte länge. Får felmeddelandet:
'id' är null eller inte ett objekt

Fattar ingenting, såhär ser koden ut:

<script type="text/javascript"> 
function bild(filename,winTitle) 
{ 
var myImage = new Image(); 
myImage.src=filename; 
properties='height=0,width=0'; 
var imgWindow = window.open('','','egenskaper'); 
html = '<html>'; 
html += '<head>'; 
html += '<title>'+winTitle+'</title>'; 
html += '<style type=text/css> body {overflow:hidden;} </style>'; 
html += '</head>'; 
html += '<body onBlur="window.close()" topmargin="0" leftmargin="0" >'; 
html += '<img src="'+myImage.src+'" onLoad="resizeTo (document.bild.width+10,document.bild.height+35); moveTo(300,150);" name="bild" onblur="window.close()" onClick="window.close()">'; 
html += '</body>'; 
html += '</html>'; 
imgWindow.document.write(html); 
} 
</script>

<a href="javascript:bild('bilder/test.gif','Testbild');"><img src="bilder/testbild.gif" width="25" height="25""></a>
Peter SMedlem sedan dec. 20025 483 inlägg
#2

Det där skriptet är definitivt inte det bästa. Jag föreslår att du istället tar en titt på Jojoxx varianter.

Web-TorMedlem sedan nov. 200013 890 inlägg
#3

Eftersom du inte har någon variabel som heter "id" i koden du postat här är det troligtvis någon annan javascript-kod som genererar felet. Har du mer kod på sidan eller kanske en länk till sidan?

jockooonoMedlem sedan mars 200561 inlägg
#4

Stämmer, det är visst mitt menyscript som felar. Men jag får inget felmeddelande innan jag lägger in det nya javascriptet. Här är menyscriptet, fattar inte jättemycket av det...

function menyInit(menuId, multiMode){
	if(!document.styleSheets || document.styleSheets.length < 1){
		var y = document.createElement("STYLE");
		y.type = "text/css";
		document.getElementsByTagName("HEAD")[0].appendChild(y);
	}

	var s = document.styleSheets[0];
	if(s.addRule)
		s.addRule("#" + menuId + " ul", "display: none", s.length);
	else if(s.insertRule)
		s.insertRule("#" + menuId + " ul {display: none }", s.length);
	else
		return;

	var m = (typeof(multiMode) == "undefined") ? true : Boolean(multiMode);
	var hx, j, c, i = 7;
	while(i-->1){
		hx = document.getElementById(menuId).getElementsByTagName("h" + i);
		j = hx.length;
		while(j-->0){
			c = hx[j].nextSibling;
			if(c.nodeName != "UL")
				c = c.nextSibling;
			c.id = menuId + i + j;
			hx[j].onclick = new Function("switchState('" + c.id + "', " + m + ")");
		}
	}

	var ul = document.getElementById(menuId).getElementsByTagName("ul");
	var x = ul.length;
	while(x-->0)
		if(getCookie(ul[x].id) && getCookie(ul[x].id) == "1")
			open(ul[x], true);
}

function open(obj, m){
	if(!m){
		var s = obj.id.substr(0,obj.id.length-1);
		var ul = document.getElementsByTagName("ul");
		for(i = 0; i < ul.length; i++)
			if(ul[i].id.indexOf(s)==0)
				close(ul[i]);
	}
	obj.style.display = "block";
	setCookie(obj.id, 1);
}

function close(obj){
	obj.style.display = "none";
	var s = obj.getElementsByTagName("ul");
	var i = s.length;
	while(i-->0){
		close(s[i]);
	}
	setCookie(obj.id, 0);
}

function switchState(objId, m){
	var obj = document.getElementById(objId);
	if(obj.style.display == "block")
		close(obj);
	else
		open(obj, m);
}

function setCookie(cookieName, cookieValue){
	document.cookie = escape(cookieName) + "=" + escape(cookieValue) + ";";
}

function getCookie(menuId){
	var re = new RegExp(escape(menuId) + "=([01])");
	re.exec(document.cookie);
	return (RegExp.$1) ? RegExp.$1 : false;
}

window.onload = function(){
	//       (String) menuid, (Boolean) allow more than one menu open (defaults to true)
	menyInit("mainmenu", false);
}
GuffaMedlem sedan juni 2004533 inlägg
#5

Menyscriptet har en funktion som heter open, vilket inte är så lyckat eftersom den då ersätter window.open.

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