[JS] getElementValue?

Pagina: 1
Acties:

  • DriesA
  • Registratie: December 2003
  • Laatst online: 26-04 22:37
Hey,

Volgende situatie heb ik:
code:
1
2
3
4
5
6
7
8
<SELECT NAME="wagen">
<option Value= "-1" id="wagen-0">&nbsp;</option>
<OPTION id="wagen-1">Koelbox</OPTION>
<OPTION id="wagen-2">Koelaanhangwagen</OPTION>
<OPTION id="wagen-3">Vriesbox</OPTION>
<OPTION id="wagen-4">Vriesaanhangwagen</OPTION>
<OPTION id="wagen-5">Tapwagen</OPTION>
</SELECT>


Bij het laden van de pagina wens ik dat een bepaalde 'option' wordt geselecteerd. Dit doe ik als volgt:
code:
1
<body onLoad="document.getElementById('wagen-'+wagen).selected='true';">

De variabele "wagen" kan variëren van 1 tot 5.

Nu heb ik een tweede select (naam=grootte), deze wordt door een ander javascript dynamisch gegenereerd. Deze select bevat geen options met id's. De waardes ervan zijn wel gekend. Bij het laden van die pagina moet ook bij deze select een bepaalde option geselecteerd zijn. Aangezien deze options geen id's hebben, kan ik bovenstaande code niet gebruiken. Zelf dacht ik dat deze code zou werken:
code:
1
<body onLoad="document.getElementByValue('grootte-'+grootte).selected='true';">
, waarbij dan de variabele grootte kan slaat op de waardes die deze option kan aannemen. Maar blijkbaar is "getElementByValue" geen goed commando.

Wie weet dus hoe ik een <option> standaard kan selecteren op basis van zijn 'value' (en niet zijn 'id')?

I don't have hard drives. i just keep 30 chinese teenagers in my basement and force them to memorize numbers.


Verwijderd

Met een loopje door de OPTION elementen heen gaan en .value vergelijken met jouw waarde?

Verwijderd

Zie net dat ik de bedoeling verkeerd gelezen heb 8)7
Als je van tevoren al de value van de option weet die geselecteerd moet worden is hiet niet zo'n probleem,
je leest de values van de options uit via bijv. een for-loopje en zodra die de goede option heeft gevonden zeg je: selecteer die handel maar ;)

Ik zal zo eens kijken of ik iets in elkaar kan knutselen, toch niks beters te doen :)

[ Voor 87% gewijzigd door Verwijderd op 25-08-2005 14:08 ]


  • DriesA
  • Registratie: December 2003
  • Laatst online: 26-04 22:37
Hey Script freak,

Concreet gaat het om deze pagina.

In de header van die pagina heb ik het volgende gezet:
code:
1
<script type="text/javascript" language="JavaScript">var n = "35 m³";</script>
. Die variabele wordt uiteindelijk elders vandaan gehaald, maar dat is het probleem nu even niet. Dan heb ik de volgende code:
code:
1
<body onLoad="document.formulier.Grootte.options[n].selected = true;"
aangezien de naam van mijn formulier "formulier" is, en de naam van mijn "select" is grootte. Verder staat er dan nog:
code:
1
2
3
4
5
6
7
8
9
<SELECT NAME="Grootte" SIZE="1">
<option id="grootte-0">&nbsp;</option>
<option id="grootte-1">8 m³</option>
<option id="grootte-2">11 m³</option>
<option id="grootte-3">16 m³</option>
<option id="grootte-4">19 m³</option>
<option id="grootte-5">23 m³</option>
<option id="grootte-6">35 m³</option>
</SELECT>


Ik krijg dan een foutmelding dat document.formulier.Grootte.options[n]. geen object is, of leeg is. Waar zit de fout?

I don't have hard drives. i just keep 30 chinese teenagers in my basement and force them to memorize numbers.


  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

De n in options[n] is een numeriek veld wat gegenereerd word vanuit de javascript.

Of te wel je moet door de option heenlopen om te kijken of de options[n].value gelijk is aan wat jij in je var n hebt gezet. En dan die selecteren.

disjfa - disj·fa (meneer)
disjfa.nl


  • Sappie
  • Registratie: September 2000
  • Laatst online: 27-04 07:10

Sappie

De Parasitaire Capaciteit!

n is de index van het options array (dwz een getal van 0 tot het aantal option elementen).
edit:
disjfa was ff sneller :)

[ Voor 18% gewijzigd door Sappie op 25-08-2005 14:11 ]

Specs | Audioscrobbler


Verwijderd

Dries_Aendekerk schreef op donderdag 25 augustus 2005 @ 14:06:
Ik krijg dan een foutmelding dat document.formulier.Grootte.options[n]. geen object is, of leeg is. Waar zit de fout?
Var n moet numeriek zijn, maar ik had het probleem verkeerd begrepen :) k ben nu even wat in elkaar aan het scripten
edit:
ah k ben te sloom ;)

[ Voor 5% gewijzigd door Verwijderd op 25-08-2005 14:12 ]


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:26

TeeDee

CQB 241

Volgens mij kan je van de oplossingen in je vorige topics het e.e.a. simpelweg combineren om ook dit topic op te lossen.

Hint: Zoals Anne zegt: Loop door je option heen net zolang totdat var n == option[i].value. Dan heb je de index en die zet je op selected.

edit:
spuit fscking 32865

[ Voor 7% gewijzigd door TeeDee op 25-08-2005 14:12 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

aha, klein probleempje gehad :) blijkt dat de string die in het select-object verschijnt niet de value van een option is maar de text...
hier de code dus maar
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<body onLoad="SelectDit();">

<script language=javascript>
function SelectDit()
{
    var deValue = "35 m³";

    for (n = 1; n < 50; n++)
    {

        if (document.formulier.Grootte.options[n].text == deValue)
        {
        document.formulier.Grootte.options[n].selected = "true";
        break;
        }
    }
}
</script>

zou moeten werken :) var deValue kan je dus van buitenaf krijgen neem ik aan
edit:

var n < 50 heb ik maar evn uit mn duim gezogen trouwens, kom zogauw niet op een manier om na te gaan hoeveel options er zijn, en 50 zou geen probleem moeten zijn met de break, en anders is het toch niet hoog genoeg om er een pc van te laten crashen ;)

[ Voor 30% gewijzigd door Verwijderd op 25-08-2005 14:30 ]


  • DriesA
  • Registratie: December 2003
  • Laatst online: 26-04 22:37
Hey Scriptfreak, hij werkt! Maar ik krijg ook een foutmelding!

Kijk zelf maar even.
Op deze pagina is DeValue=8 m³ (waarbij '8 m³ de eerste is van de beschikbare options)
http://www.movingcool.be/movingcool/beta/gamma/bestel_offerte.html?2&8%20m³&1
=> foutmelding (document.formulier.Grootte.options is geen object of leeg).
Op deze pagina is DeValue=11 m³
http://www.movingcool.be/movingcool/beta/gamma/bestel_offerte.html?2&11%20m³&1
=> geen probleem!

Blijkbaar is er alleen een probleem als de eerst option (die normaal al geselecteerd is) geselecteerd wordt. Snappie? :-)

edit:
[code]for (n = 1; n < 50; n++)[/code]
moet zijn
[code]for (n = 0; n < 50; n++)[/code]

[ Voor 33% gewijzigd door DriesA op 25-08-2005 15:48 ]

I don't have hard drives. i just keep 30 chinese teenagers in my basement and force them to memorize numbers.


Verwijderd

ah ja, vergeten, arrays beginnen met tellen bij 0 :) maak van n = 1 bij de for-loop even n = 0 en er is niks aan de hand denk ik
edit:

oh je was me al voor :X

[ Voor 15% gewijzigd door Verwijderd op 25-08-2005 14:47 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 23:48

crisp

Devver

Pixelated

Manier 1:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
function selectByValue(select, val)
{
    var i = select.options.length;
    while (i--)
    {
        if (select.options[i].value == val)
        {
            select.selectedIndex = i;
            return;
        }
    }
}


Manier 2: (zou moeten werken volgens de specs, maar uit ervaring weet ik dat het niet in alle browsers werkt):
JavaScript:
1
select.value = 'value';

waarbij select natuurlijk een referentie naar je HTML select is. Het is dus over het algemeen onnodig om elke option een apart ID te geven.

Intentionally left blank

Pagina: 1