Meer getallen in 1 variable

Status
Niet open voor verdere reacties.

JLDesign

Gebruiker
Lid geworden
15 nov 2011
Berichten
34
Ik vroeg me af of het mogelijk is dat een variable bestaat uit meer getallen, en hoe doe je dat dan?
in de 2de var van mijn code zie je ('tekst' + n), dus id='tekst2'
Ik wil echter de functie toepassen op meerdere id's tegelijk, tekst3, tekst4, t/m tekst22.
De var 'n' zou dus 2 t/m 22 tegelijk moeten omvatten, of is dat niet mogelijk?
[JS]
function addText(val){
var n = 2;
var t = document.getElementById('tekst' + n), ts = t.style;
ts.visibility = 'hidden';
ts.fontSize = '400%';
t.innerHTML = val + 'h';
t.innerHTML = val + ' ';
while(t.offsetWidth > 600){
ts.fontSize = parseFloat(ts.fontSize) - 0.1 + '%';
}
ts.visibility = 'visible';
}
[/JS]
 
lijkt me een taak voor een standaard for-lusje

for (n=2;n<=22;n++)
{
...
}
 
Als je meerdere elementen per ID opvraagt en ze lijken nogal op elkaar is het waarschijnlijk strakker om ze een unieke class-name te geven en ze dan zo te vangen:

[JS]var elems = document.getElementsByClassName('speciale-class');[/JS]

en ze dan inderdaad loopen zoals al aangeraden werd:

[JS]var i, ts, len = elems.length;

for(i = 0; i < len; i++)
{
ts = elems.style;

// ts.visibility
// elems.innerHTML
}[/JS]

Daarnaast: regel 6 en 7 doen hetzelfde, dus 6 is overbodig!
 
heel erg bedankt,
ik had de methode van wampier al ergens gevonden op internet maar het wilde niet lukken, waarschijnlijk had ik ergens een fout gemaakt, nu werkt het wel.
Ik hou het liever bij de id's.
Het gaat namelijk over een pagina waar je een eigen tekst kan invoeren en dan meteen in 21 verschillende lettertypes het voorbeeld ziet, iedere id heeft dus via een stylesheet een eigen font wat met 1 class niet mogelijk is, tenzij je de style in de html pagina zelf zet, maar die id's worden bvb ook al gebruikt om de kleur van de voorbeelden aan te passen dus ik zou dan weer vanalles moeten veranderen.
Dat regeltje 6 heb ik wel weggelaten en alles werkt nog.
jah, ik ken er eigenlijk niet zoveel van, alles op het internet gezocht en door veel te proberen.
 
iedere id heeft dus via een stylesheet een eigen font wat met 1 class niet mogelijk is
nou, je kan gewoon meerdere classes meegeven hoor :)

HTML:
<div class='voordejs arial'>
   bijvoorbeeld arial
</div>

<div class='voordejs tahoma nogeenclass'>
   lettertype tahoma!
</div>

[JS]var elems = document.getElementsByClassName('voordejs');

// nu zit in elems[] dus de 2 div's![/JS]

je kan ook met EN een class EN een id werken, mocht je dat liever hebben. Maar hey, alleen ID's werkt ook!
 
Laatst bewerkt:
Um, die getElementsByClassName() is wel strak, maar een beetje erg strak. ;)
Want was het niet zo dat de Internet Explorers t/m IE8 het verschijnsel getElementsByClassName() niet kennen (quirksmode: compatibility-tabel w3c DOM core)?

Puur element.className wordt wel (ook) door alle IE's herkend (qm: W3C DOM html):
[JS]obj=document.getElementsByTagName('div');
for (i=0; i<obj.length; i++){
if ( obj.className=='klasgenoot' ){
... doe de groeten of andere functie
}
}[/JS]
Zitten er eventueel meerdere class-namen in een class van een element, dan moet de goede even gedestilleerd worden:
[JS]obj=document.getElementsByTagName('div');
for (i=0; i<obj.length; i++){
if ( obj.className.indexOf('klasgenoot')!=-1) ){ // als tussen de 5000 class-namen ook 'klasgenoot' zit
... doe de groeten of andere functie
}
}[/JS]
En inderdaad, nummertjes trekken uit de id doet het ook prima. :)

Met vriendelijke groet,
CSShunter
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan