webForumDet fria alternativet
Logga in / Bli medlem

'id' är null eller inte ett objekt

JavaScript

4 svar · 479 visningar · startad av jockooono

Medlem sedan mars 200561 inlägg
Trådstart#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>
Medlem 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.

Medlem 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?

Medlem 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);
}
Medlem 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.

259 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)