[JS] Teller als onderdeel van een object...

Pagina: 1
Acties:

  • _.Luke._
  • Registratie: September 2001
  • Laatst online: 26-07-2021
Ik heb het volgende scriptje gefabriekt:

function fSetInactive()
{
test = document.images;
test2 = test.length;

var i = 0;
Tekst = new Array();
for(i=0;i<test2;i++)
{
document.all.Cel0.style.backgroundColor='FFFFFF';
document.all.Cel1.style.backgroundColor='FFFFFF';
document.all.Cel2.style.backgroundColor='FFFFFF';
document.all.Cel3.style.backgroundColor='FFFFFF';
document.all.Cel4.style.backgroundColor='FFFFFF';

}
}

Is er een mogelijkheid om de variabele i die ik in de lus gebruik aan het object te koppelen zodat ik binnen de for lus slechts met 1 regel code kan volstaan?
dus dat de waarde van de var. i achter de tekst Cel wordt gezet en dit alsnog als object wordt gezien??

Trying is the first step towards faillure...


  • André
  • Registratie: Maart 2002
  • Laatst online: 01-09 14:07

André

Analytics dude

code:
1
2
3
4
5
6
7
8
9
10
11
function fSetInactive()
{
  test = document.images.length;

  var i = 0;
  
  for(i=0;i<test;i++)
  {
    eval("document.all.Cel" + i).style.backgroundColor='FFFFFF';
  }
}

Even uit mijn hoofd. Maar eval is wel een vieze oplossing.

  • _.Luke._
  • Registratie: September 2001
  • Laatst online: 26-07-2021
Werkt als een trein.... :):)

senks alot... maakt me voor deze keer niet uit of het lelijk is...

Trying is the first step towards faillure...


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Yogho schreef op 06 augustus 2002 @ 09:40:
code:
1
2
3
4
5
6
7
8
9
10
11
function fSetInactive()
{
  test = document.images.length;

  var i = 0;
  
  for(i=0;i<test;i++)
  {
    eval("document.all.Cel" + i).style.backgroundColor='FFFFFF';
  }
}

Even uit mijn hoofd. Maar eval is wel een vieze oplossing.
Dit zou ook moeten werken:
code:
1
2
3
4
for(i = 0; i < test; i++) {
  if (document.getElementById) document.getElementById('Cel'+i).style.backgroundColor = '#FFFFFF';
  else if (document.all) document.all['Cel'+i].style.backgroundColor = '#FFFFFF';
}

(meteen even wat meer crossbrowser gemaakt)

Intentionally left blank


  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 25-08 22:31
als ik even een domme vraag mag stellen. .. wat wordt bedoeld met "crossbrowser" ..

ow .. en waarom is eval een vieze oplossing (en wat doet het eigenlijk ?)

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

cross-browser ??? 8)7

Da's als je website er naast IE6.0 ook goed werkt in:

IE5.5
IE5.0
IE4.0
NS4.07
NS4.5
NS6.0
Mozilla
Opera

zonder dollen: elke browser implementeerd een aantal functionaliteiten (vaak) net iets anders (bijvoorbeeld layers). Als cross-browser je niks zegt, moet je voor de grap je site eens bekijken in een niet IE-browser. Kan je weleens lachen....

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

whitehouse schreef op 06 augustus 2002 @ 11:07:
ow .. en waarom is eval een vieze oplossing (en wat doet het eigenlijk ?)
vies? eval verschilt maar 1 letter van evil, need i say more :P

wat het doet

Today's subliminal thought is:


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

Soms is eval erg bruikbaar, maar in 9 van de 10 gevallen wordt het imho misbruikt en kan er net zo makkelijk een niet-eval oplossing verzonnen worden. Het grootste probleem met eval is de onoverzichtelijkheid. Je bent met code code aan het genereren die je dan weer uit gaat voeren, en das niet handig :)

Het voorbeeld uit deze thread laat het goed zien. In het eerst voorbeeld wordt gedaan:

eval("document.all.Cel" + i).style.....

In het tweede voorbeeld:

document.all['Cel'+i].style......

eval() was hier nergens voor nodig.
Pagina: 1