Ä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 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 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);
}
GuffaMedlem sedan juni 2004533 inlägg Menyscriptet har en funktion som heter open, vilket inte är så lyckat eftersom den då ersätter window.open.