29. november 2003 - 13:11Der er
19 kommentarer og 1 løsning
Åbne et billede i en tabelcelle
Jeg vil gerne vide, om det er muligt at skrive til en tabelcelle fra et andet vindue?
Sagen er den, at jeg har et vindue, der - vha. thumbnails -åbner en popup med et billede i. Billedet er selvfølgeligt det, den pågældende thumbnail viser, men designet i popup'en er den samme. Er der så en måde, hvorpå jeg kan loade billedet ind i tabelcellen i popup'en, hvor det skal ligge? Eller skal jeg lave en HTML-fil til hvert billede?
Du kan lave det ret simpelt med frames - og uden at lave en side til hvert billede.
I det første frame laver du menuen (som viser thumbnails). Her laver du billedet til et link _direkte_ til billedet - og sætter selvfølgelig target til rammen, hvor billedet skal åbnes. Så åbner den billedet i det nye frame - uden at det kræver en ny side.
<noframes> <body> <font face="verdana, arial" color="#000000">Denne Web-side bruger rammer, og din browser understøtter ikke rammer.</font> </body> </noframes>
Der er flere forskellige måder at gøre det på. Du kan f.eks. udnytte at location.search indeholder alt hvad der er fra og med "?" i urlen. prøv at checke nedenstående:
...og hvis du gerne vil have flere informationer med over (som f.eks. brede og højde, kan du jo bare kode dem ind i urlen som f.eks. "billede.htm?pic=billede1.jpg&w=400&h=300", og så maske alle enkelt elementerne ud i popupvinduets javascript bagefter
o-zone>> Det var lige præcist, hvad jeg havde brug for. Men kan du forklare det med at "maske alle enkelt elementerne ud". Jeg har prøvet en at gennemskue, hvordan man gør, men det vil ikke virke!
he he he ... jeg blev bidt af det, og nu har jeg strikket en generel parameteraflæser sammen til dig, samt lavet et eksempel!
Gem disse to filer i samme bibliotek med de navne de har i skillelinierne :)
---8<-----[popupVindue.htm]----- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Dynamisk popup vindue</title> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1"> <script language="javascript" type="text/javascript"> function getParameters(){ if (location.search){ var parameters = location.search.substr(1).replace(/\+/," "); parameters = parameters.split("&"); for (var i=0;i<parameters.length;i++){ parameters[i] = parameters[i].split("=") parameters[i][0] = unescape(parameters[i][0]); if (parameters[i][1]) { parameters[i][1] = unescape(parameters[i][1]); } } return parameters; } else { return new Array(); } }
function getElement(name,arr){ for (var i=0;i<arr.length;i++){ if (arr[i][0]==name) { return arr[i][1]; } } return null; } </script> </head>
<body> <script language="javascript" type="text/javascript"> var parameters = getParameters();
var imgSrc = getElement("src",parameters); var imgWidth = getElement("width",parameters); var imgHeight = getElement("height",parameters); var imgBackground = getElement("bgColor",parameters);
if (imgSrc) { document.write("image kilde : "+imgSrc+"<br>"); } if (imgWidth) { document.write("image brede : "+imgWidth+"<br>"); } if (imgHeight) { document.write("image højde : "+imgHeight+"<br>"); } if (imgWidth && imgHeight) { window.resizeTo(imgWidth,imgHeight); } if (imgBackground) { document.bgColor=imgBackground; } </script> </body> </html> ---8<----------
og
---8<-----[testHovedVindue.htm]----- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>test popup kalder</title> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-1"> </head>
<body> <script language="javascript" type="text/javascript"> function openDynamicWindow(){ var source = document.forms["form1"].elements["src"].value; var width = document.forms["form1"].elements["width"].value; if (width=="") { width = 400; } var height = document.forms["form1"].elements["height"].value; if (height=="") { height = 300; } var bgColor = document.forms["form1"].elements["bgColor"].value; eval("window.open('popupVindue.htm?src="+source+"&width="+width+"&height="+height+"&bgColor="+bgColor+"','_blank','width="+width+",height="+height+",resizable');"); } </script>
Som du kan se (hvis det ellers virker ;-) ), så kan du nu vælge kilde til billede, størrelser og baggrundsfarve på dine popup vinduer.
i testHovedVindue.htm kan du se hvordan det kan sættes op enten via statiske links, eller evt. via en dynamisk form. Hvis formen skal ændre det eksisterende vindue skal du bare fjerne formens onclick event.
Vil du bruge de overførte parametre til noget mere fornuftigt end at blive skrevet ud (og ændre bgColor), så skal du bare bruge variablerne i nogle document.write sætninger.
Det kunne f.eks. være linier som disse: document.write("<table width='"+imgWidth+"'>"); document.write("<img src='"+imgSrc+"' width='"+imgWidth+"' height='"+imgHeight+"'>");
Du kan selvfølgelig også definere andre parametre. Du skal bare søge efter dem med min getElement() function. Den er i øvrigt ligeglad med rækkefølgen parametrene kommer i, men casesensitive. Du kan sagtens optimere koden, hvis du vil sælge ud af fleksibiliteten.
Eneste begrænsning er at der er en endelig længde på url'er. (og at den bruger javascript1.2 :-? )
Du spørger bare løs når der dukker noget op! :) (hmm... jeg burde jo nok egentlig have kommenteret programmet?) :-/
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.