Ä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>
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?
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);
}