[js -bug?] dynamisch aangemaakte options selecten

Pagina: 1
Acties:

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 19:18
ik heb een select object, deze heeft tijdens het laden nog geen options dus daar gaan we dan later iets aan doen, we voegen er een paar toe en we geven netjes de name en de value op.

een paar regels code verder wil ik een van die options selected maken aan de hand van de value.

nu heb ik hiervoor enkele stukjes code gemaakt en gekregen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function getOptionByName(sel,name){
    for(var i=0; i<sel.options.length; i++){
        if(sel.options[i].value == name) return sel.options[i];
    }
}

function changevalue(id,data){
    var obj = document.getElementById(id);
    if (obj.tagName.toLowerCase() == 'select'){
        getOptionByName(obj,data).selected='true';
    } else {
        obj.value=data;
    }
}

die dus de juiste option opzoeken als ik gewoon de nieuwe value invoer, deze option word dan dus selected.

met onderstaande code heb ik dus eerst in een ander frame[dataone] de options toe gevoegd aan het object[etage], wat perfect gaat.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
parent.dataone.emptyobject('etage');
                
                var newOption = parent.frames['dataone'].document.createElement('OPTION');
                newOption.innerText = "01 BEGANE GROND";
                newOption.value = "01 BEGANE GROND";
                parent.frames['dataone'].document.getElementById('etage').appendChild(newOption);
                
                var newOption = parent.frames['dataone'].document.createElement('OPTION');
                newOption.innerText = "02 EERSTE ETAGE";
                newOption.value = "02 EERSTE ETAGE";
                parent.frames['dataone'].document.getElementById('etage').appendChild(newOption);
                
                var newOption = parent.frames['dataone'].document.createElement('OPTION');
                newOption.innerText = "3";
                newOption.value = "3";
                parent.frames['dataone'].document.getElementById('etage').appendChild(newOption);
                
                var newOption = parent.frames['dataone'].document.createElement('OPTION');
                newOption.innerText = "BG";
                newOption.value = "BG";
                parent.frames['dataone'].document.getElementById('etage').appendChild(newOption);

nu roep ik dus dit aan:
code:
1
parent.frames['dataone'].changevalue('etage','BG');

en dan gebeurd het:
ik krijg een error melding, en daarin staat dat hij de eigenschap selected niet kan instellen. met daarachter: niet nader omschreven fout.
de option wordt echter wel gewoon geselecteerd maar het script stopt helaas.
als ik echter nogmaals de value probeer te verandere krijg ik geen error op dat object en gaat het script gewoon door. dit waarschijnlijk omdat de option dan al geselecteerd is.

als ik de options van te voren toevoeg en de code uitvoer werkt het wel goed en krijg ik geen errors.

heeft iemand hier ervaring mee? weet iemand of dit echt een bug is?

het os is: win2pro
de browser is: IE 5.50

openkat.nl al gezien?


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 19:18
jah oke? dus het is een bug? of niet?

en kan ik dan gewoon dit doen? want dat crasht al gelijk.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function getOptionByName(sel,name){
    for(var i=0; i<sel.options.length; i++){
        if(sel.options[i].value == name) return i;
    }
}

function changevalue(id,data){
    var obj = document.getElementById(id);
    if (obj.tagName.toLowerCase() == 'select'){
        obj.options.selectedIndex=getOptionByName(obj,data);
    } else {
        obj.value=data;
    }
}

of zie ik iets over het hoofd.

edit:

Never mind, ik had een . neergezet ipv een ;
anyway dit werkt iig wel helemaal perfect.

openkat.nl al gezien?


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Fijn zo..

Ik weet ook niet waar het aan ligt, misschien idd klein foutje in IE :S

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 19:18
thanx iig, maar uhm ik merk nu dat hij als je de options toevoegd en select in een pagina, dat hij dan de selectie pas doet als je hem nog een keer laad, kortom als de options dus al bestaan. :( jij een idee?

openkat.nl al gezien?