Avatar billede ommelise Nybegynder
29. november 2003 - 13:11 Der 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?
Avatar billede webcreator Nybegynder
29. november 2003 - 13:17 #1
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.
Avatar billede webcreator Nybegynder
29. november 2003 - 13:20 #2
<html>
<head>
<title>Billeder</title>
</head>

<frameset rows="100,*">
<frame name="menu" src="menu.html">
<frame name="main" src="main.html">

<noframes>
<body>
<font face="verdana, arial" color="#000000">Denne Web-side bruger rammer, og din browser understøtter ikke rammer.</font>
</body>
</noframes>

</frameset>

</html>
Avatar billede webcreator Nybegynder
29. november 2003 - 13:23 #3
Her får du en menu for oven, og en side til at vise billederne i for neden. main.html er blot startsiden (her kan du skrive velkommen osv.)
Avatar billede ommelise Nybegynder
29. november 2003 - 13:23 #4
Ja, jeg har selv overvejet muligheden, men jeg ville helst undgå at bruge frames. Jeg havde dog overvejet en iFrame.
Avatar billede webcreator Nybegynder
29. november 2003 - 13:25 #5
Jeg smider lige et eksempel online..
Avatar billede webcreator Nybegynder
29. november 2003 - 13:25 #6
Der er ikke den store forskel på frames og iframes. Jeg er heller ikke selv vild med frames - men i denne sammenhæng er det nu en rimelig løsning.
Avatar billede webcreator Nybegynder
29. november 2003 - 13:29 #7
Avatar billede webcreator Nybegynder
29. november 2003 - 13:29 #8
Kan det mon bruges ?
Avatar billede webcreator Nybegynder
29. november 2003 - 13:30 #9
Det er selvfølgelig index.html du skal "starte" :)
Avatar billede o-zone Nybegynder
29. november 2003 - 13:31 #10
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:

---8<-----[i thumb vinduet]-----
<a href="billede.htm?billede1.jpg" onclick="window.open('billede.htm?billede1.jpg','vindueNavn','vindueParametre'); return false;"><img src="thumb1.jpg"></a>
<a href="billede.htm?billede2.jpg" onclick="window.open('billede.htm?billede2.jpg','vindueNavn','vindueParametre'); return false;"><img src="thumb2.jpg"></a>
---8<----------

---8<-----[i popup vinduet]-----
<script language="javascript" type="text/javascript">
  document.write("<img src='"+location.search.substr(1)+"'>");
</script>
---8<----------

så indsætter du scriptet i popup vinduet dér hvor du vil have billedet frem (f.eks. i en tabel celle):)

(-:H@zze
Avatar billede webcreator Nybegynder
29. november 2003 - 13:34 #11
Det var jo også en løsning :)
Avatar billede o-zone Nybegynder
29. november 2003 - 13:38 #12
...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

(-:H@zze
Avatar billede webcreator Nybegynder
29. november 2003 - 13:43 #13
Uh, jeg fristes til at lave en løsning i PHP nu, der selv henter info'en :)
Men det må da også være muligt i JS ?!

Ville jo være smart hvis den selv udskrev :

- filnavn
- filstørrelse (KB)
- Billedstørrelse (Pixels)
- Farvedybde

Blot et par forslag :)
Avatar billede roenving Novice
30. november 2003 - 13:25 #14
Avatar billede ommelise Nybegynder
02. december 2003 - 21:19 #15
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!
Avatar billede o-zone Nybegynder
03. december 2003 - 00:36 #16
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>


<form name="form1" method="GET" action="popupVindue.htm" onsubmit="openDynamicWindow(); return false;">
<h1>Dynamiske billeddata</h1>
<table border=1 cellspacing=0 cellpadding=3>
    <tr>
        <td>
            indtast src:<br>
            <input type="text" name="src" size="50"><br>
            indtast brede:<br>
            <input type="text" name="width" size="10"><br>
            indtast højde:<br>
            <input type="text" name="height" size="10"><br>
            indtast baggrundsfarve (af formatet colorname eller RRGGBB):<br>
            <input type="text" name="bgColor" size="10"><br>
            <br>
            <input type="reset" value=" slet "> | <input type="submit" value=" send "></td>
    </tr>
</table>
</form><br>
<h1>Statiske billeddata</h1>
<a href="popupVindue.htm?src=billede1.jpg&width=640&height=480" onclick="window.open('popupVindue.htm?src=billede1.jpg&width=640&height=480','_blank','resizable=yes'); return false;">billede 1</a> (640x480)<br>
<a href="popupVindue.htm?src=billede2.jpg&width=100&height=100" onclick="window.open('popupVindue.htm?src=billede2.jpg&width=100&height=100&bgColor=ff0000','_blank','resizable=yes'); return false;">billede 2</a> (100x100 baggrund ff0000)<br>
<a href="popupVindue.htm?src=billede3.jpg&width=300&height=200" onclick="window.open('popupVindue.htm?src=billede3.jpg&width=300&height=200&bgColor=steelblue','_blank','resizable=yes'); return false;">billede 3</a> (300x200 baggrund steelblue)<br>
</body>
</html>
---8<----------
Avatar billede o-zone Nybegynder
03. december 2003 - 00:50 #17
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 :-? )

Var det ikke alle points'ene værd? :)

(-:H@zze
Avatar billede ommelise Nybegynder
03. december 2003 - 16:24 #18
Jo, det var det helt sikkert. Nu skal det vide sog, om jeg er klog nok til at bruge det ;-)
Avatar billede ommelise Nybegynder
03. december 2003 - 16:25 #19
Øhm... "vise sig"!
Avatar billede o-zone Nybegynder
03. december 2003 - 17:24 #20
Du spørger bare løs når der dukker noget op! :)
(hmm... jeg burde jo nok egentlig have kommenteret programmet?) :-/
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester