[JS] Dynamisch nieuwe optie maken

Pagina: 1
Acties:

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Topicstarter
Ik ben bezig om een scriptje te maken die dynamisch nieuwe opties aan een select box toevoegd en het werkt bijna, maar dat laatste stukje kom ik echt niet uit.

Op het moment heb ik het volgende
JavaScript:
1
2
3
options[i] = new Option ( select.options[i].text, select.options[i].value,  select.options[i].defaultSelected, select.options[i].selected );
//Het ID moet ook worden toegevoegd 
options[i].id = select.options[i].id;

Alleen bij het ID gaat het verkeerd. ik krijg namelijk op regel nr. 3 de melding
Error: options[i] has no properties

Maar het lijkt wel te werken want de functies die daarna nog worden aangeroepen 'weten' het ID wel. Nu ben ik al aan het zoeken geweest op veel sites alleen ik kan nergens vinden hoe ik het ID op een andere manier mee kan geven. Op de meeste sites wordt alleen de text en de value meegegeven aan de functie new option.

Hoe kan ik het ID op een andere methode meegeven zodat ik geen error krijg? En wat zijn de exacte argumenten voor new Option?

  • André
  • Registratie: Maart 2002
  • Laatst online: 11-02 14:19

André

Analytics dude

Ik heb het idee dat je gebruik maakt van reserved words, oftwel je moet je variabelen een andere naam geven.

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Topicstarter
André schreef op vrijdag 21 juli 2006 @ 11:10:
Ik heb het idee dat je gebruik maakt van reserved words, oftwel je moet je variabelen een andere naam geven.
Ik heb dat even geprobeerd en de var select anders genoemd, maar dit maakt geen verschil. Ook heb ik de var options omgenoemd naar optionsvanmij maar dit maakt allemaal geen verschil. Ik blijf de zelfde fout houden.

  • André
  • Registratie: Maart 2002
  • Laatst online: 11-02 14:19

André

Analytics dude

Oke, hoe ziet de rest van je code er dan uit? En dan met name de het select object?

Verwijderd

Misschien heb je hier iets aan: Quirksmode.org - Dynamic options

Daar worden maar twee argumenten gebruikt:
JavaScript:
1
document.forms['testform'].testselect.options[i] = new Option('new text','new value');

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Topicstarter
Verwijderd schreef op vrijdag 21 juli 2006 @ 11:29:
Misschien heb je hier iets aan: Quirksmode.org - Dynamic options

Daar worden maar twee argumenten gebruikt:
JavaScript:
1
document.forms['testform'].testselect.options[i] = new Option('new text','new value');
Ja klopt, en dat staat ook in mijn TS. Ik wil dus niet alleen die 2 opties gebruiken maar meer.

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Topicstarter
André schreef op vrijdag 21 juli 2006 @ 11:27:
Oke, hoe ziet de rest van je code er dan uit? En dan met name de het select object?
Oke even iets meer code:

JavaScript:
1
2
3
4
5
6
var options = new Array (select.options.length);
        
        for (var i = 0; i < options.length; i++)
        
        options[i] = new Option ( select.options[i].text, select.options[i].value,  select.options[i].defaultSelected, select.options[i].selected );
        options[i].id = select.options[i].id;

select = een meegegeven 'HTMLselectElement'. Deze kan ik met een alert ook opvragen.

Daarnaast wil ik dus een nieuwe array maken met daarin alle nieuwe opties. Hier wordt dus een bestaande list gekopieerd. Alleen wat dus mist is het ID.

Verwijderd

Misschien kun je het proberen door gebruik te maken van lauter DOM methoden:
JavaScript:
1
2
3
4
5
6
7
var newOption = document.createElement("option");
newOption.setAttributeNode(document.createAttribute("value"));
newOption.setAttribute("value", newValue);
newOption.setAttributeNode(document.createAttribute("id"));
newOption.setAttribute("id", newId);
newOption.appendChild(document.createTextNode(newText));
select.appendChild(newOption);

Disclaimer: syntaxis kan incorrect zijn, even snel getypt
Pagina: 1