Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Alle selectboxen binnen een div veranderen

Pagina: 1
Acties:
  • 135 views sinds 30-01-2008
  • Reageer

  • Twilight
  • Registratie: December 2000
  • Laatst online: 28-11 21:51
Ik wil alle select boxen binnen een div kunnen aanpassen naar dezelfde waarde.
Voorbeeld:

<div id=1>
<select id=1 onchange=functie()></select>
<select id=2 onchange=functie()></select>
<select id=3 onchange=functie()></select>
</div>

<div id=2>
<select id=1 onchange=functie()></select>
<select id=2 onchange=functie()></select>
<select id=3 onchange=functie()></select>
</div>

m.a.w. Als selectbox1 van div1 veranderd naar 22:00uur, moeten de andere selectboxen binnen div1 ook op 22:00uur springen. Ik zit op dit moment te klooien met:

aantal_selects = document.getElementsByTagName('select').length;

Alleen dan krijg ik alle selectboxen terug maar niet alleen die binnen div1 zitten.

www.nanon.nl


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Ik neem aan dat de werkelijke id's van je divs en selectboxes anders heten? Pure numerieke identifiers lijkt me niet zo handig. :P

Inhoudelijk: kun je niet document.getElementById('id van div').getElementsByTagName('select') gebruiken?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

[pure miereneuk modus]
Mag je uberhaupt wel een ID beginnen met een getal? Of alleen een getal als ID? Ik dacht dat ik daar weleens een validation error op heb gekregen ;)
[/pure miereneuk modus]

En ja, ik zou doen wat -NMe- zegt. Misschien eerst je div ophalen, kijken offie niet null is, daarna de selects ophalen... Maar da's je eigen implementatie keus.

  • 418O2
  • Registratie: November 2001
  • Laatst online: 20:44
even tussendoor

maar als je 2 selectboxen hebt die dezelfde waarde krijgen als de ander, waarom heb je er dan 2?

  • Zamalan
  • Registratie: September 2007
  • Laatst online: 26-02-2015

Zamalan

Whine Connaisseur

Dat zou zoiets moeten zijn, zonder mogelijkse syntax fouten e.d.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function functie()
{
  // de div waarmee we werken
  var div = this.parentNode;
  // de geselecteerde optie van de select waarvan de event triggered
  var value =  this.options[this.selectedIndex].value;
  // array van de selects in de div
  var selects = div.getElementsByTagName("select");
  // voor elke select in de div
  for(var i = 0; i < selects.length; i++)
  {
    // zet value (ik weet niet hoe dat moet van buiten)
  }
}

[ Voor 6% gewijzigd door Zamalan op 18-10-2007 09:14 ]

MSI GX660 --- i5 460M /// 4GB DDR3 /// Mobility Radeon HD5870 /// 1920x1080 /// 500GB


  • Cartman!
  • Registratie: April 2000
  • Niet online
Ik zou het jezelf makkelijk maken en gebruik maken van bijv. MooTools Dan kun je gewoon het volgende doen:

code:
1
var elements = $$('div#je_id select');


en heb je alle select elementen binnen de div 'je_id' :)

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Ik denk dat de oplossing van Zamalan de mooiste is.
Daarmee heb je helemaal geen IDs of 'harde' verwijzingen nodig. Dat maakt je script veel flexibeler bij eventuele toekomstige wijzigingen.

[ Voor 57% gewijzigd door gvanh op 19-10-2007 13:09 ]


  • Crayne
  • Registratie: Januari 2002
  • Laatst online: 17-03 13:41

Crayne

Have face, will travel

Ik betwijfel of Zamalan's oplossing zal werken. Hij gebruikt 'this' in de verkeerde scope en de parentnode van de select die veranderd wordt hoeft echt niet altijd de bovenliggende div te zijn.

Met het volgende script en een div die als id 'divToChange' mee krijgt, komt TS een stuk verder, áls al zijn selects dezelfde waardes hebben. Zo niet, dan zal bij elke select eerst de juiste option worden gevonden wiens waarde overeenkomt met die van de gekozen option index in de originele select.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
function changeSelects(oSelect) 
{ 

  var aSelects = document.getElementById('divToChange').getElementsByTagName('select'); 

  for(var x = 0; x < aSelects.length; x++) 
  { 
 
        aSelects[x].selectedIndex = oSelect.selectedIndex;

  } 

}


Aan te roepen met

HTML:
1
<select name="select1" onChange="changeSelects(this);">

[ Voor 8% gewijzigd door Crayne op 19-10-2007 15:06 ]

Mijn Library Thing catalogus


  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

@TS: In je voorbeeld hebben er meerdere (ook nog eens zelfde type) elementen in de pagina dezelfde id. Dat is sowieso niet goed, net als alleen een nummertje als id, ook niet handig.


Zelf grijp ik meestal naar jQuery bij dit soort dingen, maar voor zo'n klein dingetje is dat misschien een beetje overkill. Het scheelt soms wel wat cross-browser gezeur. :)

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.

Pagina: 1