Toon posts:

[js] Lusvariabele gebruiken i.c.m. de replacefunctie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Weet er iemand hoe ik de onderstaande code werkent zou kunnen krijgen? Ik wil namelijk geen geen dingen toepassen als: 'blaat ' + i + ', blaat ' + i, omdat de invoer uiteindelijk dynamisch wordt (dus er kunnen een x aantal iKey's in voorkomen).


JavaScript:
1
2
3
4
5
6
7
var sTest = 'blaat iKey, blaat iKey';

for (i = 0; i <= 5; i++)
{
    sTest = sTest.replace(/iKey/g, i);
    document.write(sTest + '<br>');
}

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

crisp

Devver

Pixelated

JavaScript:
1
2
var re = new RegExp(iKey, 'g');
sTest = sTest.replace(re, i);

Intentionally left blank


Verwijderd

Topicstarter
Als ik jou code toepas:

JavaScript:
1
2
3
4
5
6
7
8
9
var sTest = 'blaat iKey, blaat iKey';

for (i = 0; i <= 5; i++)
{
    var re = new RegExp(iKey, 'g');
    sTest = sTest.replace(re, i);
    
    document.write(sTest + '<br>');
}


Krijg ik een 'iKey is undefined'. En als ik die 'iKey' tussen qoutes zet, dan werk het ook niet. Zie onderstaande output:

blaat 0, blaat 0
blaat 0, blaat 0
blaat 0, blaat 0
blaat 0, blaat 0
blaat 0, blaat 0
blaat 0, blaat 0

Verwijderd

Topicstarter
Het lijkt erop dat de replacewaarde niet mee verandert met die in de lus. De replacewaarde blijft dus op '0' staan.

  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

JavaScript:
1
2
3
4
5
6
7
8
9
var sTest = "blaat iKey, blaat iKey";
var i = 0;

while (sTest.indexOf("iKey") > -1)
{
  sTest = sTest.replace(/iKey/, i);
  i++
}
document.write(sTest + "<br>");

[ Voor 33% gewijzigd door André op 13-04-2004 16:10 ]


Verwijderd

Topicstarter
Hier komt: blaat 0, blaat 0 uit. En het is de bedoeling dat de lusvariabele verwerkt wordt in de out te puten string.

Het resultaat zou dus dit moeten zijn:

blaat 0, blaat 0
blaat 1, blaat 1
blaat 2, blaat 2
blaat 3, blaat 3
blaat 4, blaat 4
blaat 5, blaat 5

[ Voor 3% gewijzigd door Verwijderd op 13-04-2004 16:17 ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

Bedoel je dit? Het geeft wel de gewenste output:

JavaScript:
1
2
3
4
5
6
var sTest = "blaat iKey, blaat iKey";

for (var j = 0; j < 5; j++)
{
  document.write(sTest.replace(/iKey/g, j) + "<br>");
}

[ Voor 62% gewijzigd door André op 13-04-2004 16:29 ]


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

crisp

Devver

Pixelated

Ik snap de bedoeling denk ook niet helemaal; ik dacht dat iKey een variabel iets was, dit kan ook:

JavaScript:
1
2
3
var sTest = 'blaat iKey, blaat iKey';
var i = 0;
sTest = sTest.replace(/iKey/g, function() { return i++; });


edit: oke, met je laatste edit begrijp ik 'm; gewoon zo dus:

JavaScript:
1
2
3
4
5
6
var sTest = 'blaat iKey, blaat iKey';

for (var j = 0; j < 5; j++)
{
  document.write(sTest.replace(/iKey/g, j) + '<br />');
}


je moet sTest natuurlijk niet overschrijven ;)

[ Voor 39% gewijzigd door crisp op 13-04-2004 16:25 ]

Intentionally left blank


Verwijderd

Topicstarter
Je hebt gelijk. Ik overschreef 'em steeds. Hoe dom kan je zijn 8)7 :P. Bedankt voor de oplossing i.i.g!
Pagina: 1