Toon posts:

[javascript]Waarde aan dropdown-menu's toekennen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Op mijn pagina staan een aantal dropdown-menu's onder elkaar.
Deze dropdown-menu's worden geschreven door een php-script, maar dat is even niet van toepassing.
Een aantal invallers moeten een reiskosten vergoeding krijgen en dus moet bij iedere dag dat ingevallen is moet de juiste school geselecteerd worden.
Deze invallers zijn meestal langere tijd op 1 school ingevallen.
Daarom is het de bedoeling dat wanneer in 1 dropdown menu een school gekozen wordt, dat in alle onderstaande dropdown-menu's automatisch dezelfde school geselecteerd wordt.
Wanneer later weer een keuze gemaakt wordt, dienen weer alle onderstaande dropdown-menu's die waarde over te nemen.

code:
1
2
3
4
5
6
7
8
9
10
11
function updateScholen(nr,m)
{
  var t;
  t = nr;
  selschool = document.form1.school+nr+.options[document.form1.school+nr+.selectedIndex].value;
  while(t < m+1)
  {
    document.form1.school+t+.options[document.form1.school+t+.selectedIndex].value = selschool;
    t++;
  }
}


hierbij is m het aantal dropdown-menu's en nr is het nummer van de dropdown-box die veranderd is.
Deze worden alsvolgt aangeroepen:
code:
1
 <select name="school'.$i.'" onChange="javascript:updateScholen('.$i.','.$aantal.')">

is de aanroep

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
JavaScript:
1
document.form1.school+t+.options[document.form1.school+t+.selectedIndex].value = selschool;


Dit is zowiezo al verkeerd. Wat hier staat is Pak document.form1.school en tel daar t bij op ( Ik weet niet hoe je bij een - niet bestaand - object een getal op kan tellen ). en tel daar .options[...].value bij op.

Het lijkt me handig om eens een tutorial javascript te volgen en te snappen dat een variabele niet zomaar een string is waar je dingen bij op kunt tellen om een andere variabele te krijgen.
In javascript is het trouwens nog wel mogelijk met Eval maar dan kan je beter iets van FindElementByID o.i.d. gebruiken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Verwijderd

En daar komt hij weer: [Alg] Naamgeving

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

En dan ga ik nog even zeuren over het incorrecte gebruik van javascript: in een event-handler, en wijzen op het 'this'-keyword ;)

Intentionally left blank


  • André
  • Registratie: Maart 2002
  • Laatst online: 06-05 11:13

André

Analytics dude

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
function updateScholen(nr,m)
{
  var t;
  t = nr;
  f = document.forms["form1"].elements;

  selschool = f["school" + nr].options[f["school" + nr].selectedIndex].value;
  while(t < m+1)
  {
    f["school" + t].options[f["school" + t].selectedIndex].value = selschool;
    t++;
  }
}

[ Voor 8% gewijzigd door André op 23-03-2005 18:25 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:27

crisp

Devver

Pixelated

Eerder zoiets:
JavaScript:
1
2
3
4
5
6
7
8
9
10
function updateScholen(curSel, nr)
{
  var form = curSel.form;
  var index = curSel.selectedIndex;
  var nextSel;
  while((nextSel = form.elements['school' + (++nr)]) != null)
  {
    nextSel.selectedIndex = index;
  }
}

met
HTML:
1
<select name="school13" onchange="updateScholen(this, 13)">

Intentionally left blank

Pagina: 1