Avatar billede Slettet bruger
02. februar 2001 - 10:31 Der er 9 kommentarer og
1 løsning

Dynamiske indsætte OPTION i SELECT field

Jeg har følgende kode, der i IE5 kan lave en side, og efterfølgende indsætte en option i select box. Det virker også i NS4.7, men ikke i NS6?

Hvad har jeg gjort forkert?

<html>
<head>
    <title>Test</title>
<script language=\"JavaScript\">
<!--
tekster=new Array(\"Option 1\",\"Option 2\",\"Option 3\")
function hentOptions() {
    for (i=0; i<tekster.length; i++) {
        o = new Option()
        if (i==0) o.selected=true;
        o.value=i
        o.text=tekster[i]
        document.frm.model.options[i]=o
    }
}
// -->
</script>   
</head>
<body ONLOAD=\"java script:hentOptions()\">
<!--
    Følgende select har forkert størrelse i NS4.7
    Den er OK i IE5.5
    Den er tom(?) i NS6
-->
<form name=\"frm\">
        <select name=\"model\">
        </select>
</form>
</body>
</html>


Avatar billede vandhunden Nybegynder
02. februar 2001 - 11:55 #1
NS 6 bruger DOM.
Avatar billede Slettet bruger
02. februar 2001 - 12:03 #2
Det kan godt være, svaret er korrekt.

Men jeg ved ikke, hvad DOM er?

Mener du at NS6 ikke bruger JavaScript?

Og hvad med NS4.7, hvordan kan jeg få det rigtigt der?
Avatar billede emileej Nybegynder
02. februar 2001 - 15:57 #3
Start lige med, at rette alle de manglende \';\' hva\' :)

E-)mil
Avatar billede Slettet bruger
02. februar 2001 - 16:13 #4
Emileej->

Der behøver ikke at være semikolon i javascript.

Linieskift er OK
Avatar billede jakoba Nybegynder
02. februar 2001 - 17:04 #5
Jo nogen gange SKAL der faktisk være ; for at fortolkeren kan hitte ud af det.
Andre gange er det blot en hjælp til den der prøver at læse og forstå koden.
Så tag og brug dem, også selvom de ikke \"behøver\" at være der.

Dit script må på en eller anden måde hænge sammen med et <select element i en <form  du gør det ved at sige:

    document.frm.model.options[i]=o;

i den nye DOM (Document Object Model) gør du det med:

    var minFrm = document.getElementByID(\"frm\");
    minFrm.model.options[i]=o;

mvh JakobA
Avatar billede jakoba Nybegynder
02. februar 2001 - 17:12 #6
http://www.w3.org/DOM/

her kan du læse alt om DOM. Jeg håber stadig på at finde nogen mere læsevenlige sider om det :)
Avatar billede Slettet bruger
02. februar 2001 - 17:25 #7
jakoba-> Tak for det.

Jeg venter med at acceptere svar, indtil der er nogen, der har fortalt, hvad jeg skal gøre for at indkapsle DOM-browsere og hvad jeg skal gøre for at få det til at køre på NS4.7
Avatar billede jakoba Nybegynder
02. februar 2001 - 19:57 #8
Nu skulle den være OK i Explorer og NS4.7-  NS behøvede blot en width i select-taggen fordi netscape ikke resizer elementer dynamisk efter størrelsen af deres indhold.

Virker måske i NS6. Jeg har ikke NS6 så du må selv teste.

<head>
<!-- Minus AutoDato -->
    <title>Test</title>
<META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3\">
<script language=\"JavaScript\"> <!--

var tekster = new Array(\"Option 1\",\"Option 2\",\"Option 3\")
function hentOptions() {
    var mf = o = null;          // to lokale pointere
    if (document.getElementByID)
        mf = document.getElementsByID(\"frm\")  // DOM
    else mf = document.forms.frm;    // gammel Object Model
    for (i=0; i<tekster.length; i++) {
        o = mf.model.options[i] = new Option();
        o.value=i;
        o.text=tekster[i];
    };
    mf.model.options[0].selected=true;

}; //end hentOptions()

// -->
</script>   
</head>
<body ONLOAD=\"java script:hentOptions()\">
<!--
    Følgende select har forkert størrelse i NS4.7
    Den er OK i IE5.5
    Den er tom(?) i NS6
-->
<form name=\"frm\">
        <select name=\"model\" width=40>
        </select>
</form>
</body>
</html>

mvh JakobA
Avatar billede olebole Juniormester
02. februar 2001 - 20:48 #9
<ole>
En metode, der vist virker overalt:

<script language=\"JavaScript\">
<!--
tekster=new Array(\"Option 1\",\"Option 2\",\"Option 3\")
function hentOptions() {
    for (i=0; i<tekster.length; i++) {
        o = new Option();
        if (i==0) { o.selected=true; }
        o.value = i;
        o.text = tekster[i];
        if (document.getElementById) {
            document.getElementById(\"frm\").model.options[document.getElementById(\"frm\").model.options.length] = o;
        } else {
            document.frm.model.options[document.frm.model.options.length] = o;
        }
    }
}
// -->
</script>   

...og select\'en:

<form name=\"frm\">
        <select name=\"model\">
            <option>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</option>
        </select>
</form>

Du bliver nødt til at lave en option med en masse nobrake-spaces for at få det til at funke i NS4+.
/mvh
</bole>
Avatar billede Slettet bruger
04. februar 2001 - 16:47 #10
jakoba-> Tak for det gode svar.
ole-> Jakoba var først og fik derfor point.
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