Avatar billede arentoft Nybegynder
29. november 2001 - 09:23 Der er 11 kommentarer og
1 løsning

Copy select box?

Hej!
Jeg har brug for i DHTML at kopiere en select box over i en variabel, uden det blot er en pointer der peger på den orginale select box - hvordan gør jeg det?

Hvis jeg f.eks blot gør sådan, er det blot en pointer der bliver oprettet:

var objOrg = objSelectbox;
objSelectbox.length = 0;

Dette resulterer i at både objOrg og objSelectbox har en length på 0, altså var det blot en pointer!

Hvordan laver jeg en fuldblodet kopi?

På forhånd tak

/arentoft/
Avatar billede nikolajdu Nybegynder
29. november 2001 - 09:33 #1
Du kan f.eks smide det ind i en array. Her smider jeg f.eks value ind.

<html>
<head>
    <title>Untitled</title>
   
    <script>
   
    function kopier(){
   
    kopi = new Array(document.f.s.length)
   
    for (i=0;i<document.f.s.length;i++){
   
    kopi[i] = document.f.s.options[i].value
   
    }
   
    alert(kopi[0]+\" \"+kopi[1]+\" \"+kopi[2]+\" \"+kopi[3])
   
    }
   
   
    </script>
   
</head>

<body>
<form name=\"f\">
<select name=\"s\">
<option name=\"1\" value=\"1\">1</option>
<option name=\"2\" value=\"2\">2</option>
<option name=\"3\" value=\"3\">3</option>
<option name=\"4\" value=\"4\">4</option>

</select>

<input type=\"button\" value=\"Kopiér\" onClick=\"kopier()\">

</form>


</body>
</html>

Er det noget i den stil??

/Nikolaj
Avatar billede arentoft Nybegynder
29. november 2001 - 09:36 #2
Ja, klart men kønt er det sgu\' ik\' ;-) Er der virkelig ikke em bedre måde at gøre det på?

/arentoft/
Avatar billede nikolajdu Nybegynder
29. november 2001 - 09:38 #3
Hvad mener du med kønt??

Du behøver ikke input knappen, hvis det er den. Du kan bare nøjes med at køre scriptet.
Avatar billede arentoft Nybegynder
29. november 2001 - 09:41 #4
Ja tak, det ved jeg ... ;-)

Det er jo ikke en specielt \"køn\" måde at løse problemet på, at oprette to arrays (en til text og en til value). Findes der ikke en metode til at kopiere et objekt over i et andet uden brug af pointers?

/arentoft/
Avatar billede nikolajdu Nybegynder
29. november 2001 - 09:45 #5
Du kan tage \"hele formen på den her måde:

    function kopierIgen(){
   
    alert(document.getElementById(\'kopierMig\').innerHTML)
   
    }
   
    </script>
   
</head>

<body>
<div ID=\"kopierMig\">
<form name=\"f\" ID=\"f\">
<select name=\"s\">
<option name=\"1\" value=\"1\">1</option>
<option name=\"2\" value=\"2\">2</option>
<option name=\"3\" value=\"3\">3</option>
<option name=\"4\" value=\"4\">4</option>

</select>

<input type=\"button\" value=\"Kopiér\" onClick=\"kopier()\">
<input type=\"button\" value=\"KopiérIgen\" onClick=\"kopierIgen()\">
</form>
</div>
Avatar billede arentoft Nybegynder
29. november 2001 - 09:53 #6
Problemet med at kopiere innerHTML til innerHTML er at der vist er en bug i IE\'en for den smider det første <option> tag i rækken.
Avatar billede nikolajdu Nybegynder
29. november 2001 - 09:58 #7
Jeg ser intet problem med at den skulle smide det bagerst ej heller hvis man udskriver den.
Avatar billede nikolajdu Nybegynder
29. november 2001 - 10:01 #8
Det kan i øvrigt heller ikke være hensigtsmæssigt at kopiere et objekt med fuldstændigt samme navn.
Avatar billede arentoft Nybegynder
29. november 2001 - 10:01 #9
Jeg har selv løst det på flg. måde nu:

var objOrg = document.createElement(\"select\");
for (i = 0; i < objSelectbox.length; i++) {
  var objTmp = document.createElement(\"option\");
  objTmp.text = objSelectbox.options[i].text;
  objTmp.value = objSelectbox.options[i].value;   
  objOrg.add(objTmp);
}

Men tak for inputs!

/arentoft/
Avatar billede nikolajdu Nybegynder
29. november 2001 - 10:07 #10
Det er også en fin metode, jeg undrer mig så bare over hvorfor du spurgte :-)

Husk lige at svare selv igen og lukke spørgsmålet.

God dag

/Nikolaj
Avatar billede olebole Juniormester
29. november 2001 - 13:16 #11
<ole>
Ja, det ville være rart, om folk brugte blot et par timer til at overveje løsningsmodeller, *inden* der bliver postet et spm  ;o)
/mvh
</bole>
Avatar billede arentoft Nybegynder
29. november 2001 - 21:40 #12
Jeg spurgte fordi jeg gerne ville have en pæn måde at gøre tingene på, samt at jeg havde siddet i nogen tid med problemet - er det ikke derfor dette forum er her?`

/arentoft/
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