login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Typ een zin met Javascript (Probleem)

Offline stefan1987 - 27/07/2009 19:44
Avatar van stefan1987Nieuw lid Hoi Allemaal,

Een tijdje terug had ik een script gemaakt in php om een tekst te laten typen.
Zie hier de Php Code:

  1. function typ($zin)
  2. {
  3. // de zin typen
  4. $tellen = "0";
  5. $aantal_letters = strlen($zin);
  6. echo str_pad('',4096);
  7. while ($tellen < $aantal_letters) {
  8. echo "$zin[$tellen]";
  9. usleep(50000);
  10. $tellen = $tellen + "1";
  11. }
  12. // 1 seconde wachten
  13. usleep(1000000);
  14. }
  15.  
  16. typ ("Dit is een tekstregel 1");
  17. typ ("Dit is een tekstregel 2");


Nu heb ik zelf geen problemen met dit script (Internet Explorer)
Maar omdat de Firefoxgebruikers problemen hadden met het script werd me aangeraden om het in javascript te maken.

Nu heb ik dit gedaan, en met een combinatie van Javascript en Php heb ik hetzelfde effect kunnen bereiken.
Zie hier de Javascript Code:

  1. <?
  2.  
  3. function typ_de_zin($zin)
  4. {
  5. //Variabelen maken
  6. $nummer = "0";
  7. $aantal_letters = strlen($zin);
  8.  
  9. //Start van het script
  10. echo "<script type='text/javascript'>";
  11. echo "setTimeout('typen$nummer()', 10);";
  12.  
  13. //While loop tot einde van de zin
  14. while ($nummer < $aantal_letters){
  15. $letter = $zin[$nummer];
  16. echo "function typen$nummer(){";
  17. echo "document.getElementById('typen').innerHTML += '$letter';";
  18. $nummer = $nummer + 1;
  19. echo "setTimeout('typen$nummer()', 90);}";
  20. }
  21.  
  22. //Einde van script
  23. echo "function typen$nummer(){}";
  24. echo "</script>";
  25.  
  26. }
  27.  
  28. ?>
  29.  
  30. <div id='typen'></div>
  31.  
  32. <?
  33. typ_de_zin ("Dit is een test");
  34. ?>


Maar het probleem van dit script is dat het alleen maar werkt voor 1 regel..
Zodra ik nog een zin wil typen door de functie "typ_de_zin" te gebruiken, wordt alleen de laatste zin 2x getypt (elke letter 2x)

Zouden jullie me verder kunnen helpen?

Alvast bedankt

Groetjes Stefan

7 antwoorden

Gesponsorde links
Offline Martijn - 27/07/2009 19:57
Avatar van Martijn Crew PHP Je kunt beter opnieuw je functie schijven en daar dit doen (ik weet even de split functie niet)

  1. function maakZin(string){
  2. var letters = split(string); // dit dus vervangen door werkende functie
  3. var aantalLetters = string.length;
  4. var i =0;
  5. while(i != aantalLetters){
  6. document.GetElementById('waarJeZinMoet').innerHTML += letters[i];
  7. }//einde while
  8. }
Offline Stijn - 27/07/2009 20:02
Avatar van Stijn PHP expert
  1. function stringToChars(str)
  2. {
  3. var chars = new Array();
  4. for( var i = 0 , i < str.length() , i++ )
  5. chars[i] = str.substring(i , i+1);
  6. return chars;
  7. }


Give it a shot 
Offline stefan1987 - 27/07/2009 20:08 (laatste wijziging 27/07/2009 20:08)
Avatar van stefan1987 Nieuw lid Dankjulliewel voor de supersnelle reactie, maar ik snap niet helemaal hoe ik jullie functie nu in mijn script moet krijgen..
Ik ben pas sinds vandaag een beetje met javascript bezig 

Kunnen jullie een voorbeeldje geven met mijn script?
Offline Sepiroth - 28/07/2009 01:31
Avatar van Sepiroth Nieuw lid Je moet javascript scripts in je head zetten. Zo dus
  1. <script type="text/javascript">
  2. function stringToChars(str)
  3. {
  4. var chars = new Array();
  5. for( var i = 0 , i < str.length() , i++ )
  6. chars[i] = str.substring(i , i+1);
  7. return chars;
  8. }
  9.  
  10. function maakZin(string){
  11. var letters = stringToChars(string);
  12. var aantalLetters = string.length;
  13. var i =0;
  14. while(i != aantalLetters){
  15. document.GetElementById('waarJeZinMoet').innerHTML += letters[i];
  16. }//einde while
  17. }
  18. </script>


Daarna kan je die gewoon aanroepen met onLoad of onClick. Event handling , hier is uitleg over event handling. Javascript staat dus los van PHP. En kan javascript gewoon net zoals html gelijk typen zolang het tussen de script tags staat. Dus geen javascript echoën. Ik hoop dat je er wat aan hebt.
Offline stefan1987 - 28/07/2009 17:41
Avatar van stefan1987 Nieuw lid Sorry, maar ik kom er niet aan uit.

Ik snap wel dat je normaal javascript niet hoort te echoën met php.
Maar juist omdat ik het wil laten "typen" (letter voor letter laten zien) heb ik hier wel voor gekozen.

En de scripts die jullie geven doen dat niet meer toch?

En het laatst geposte script geeft alleen een foutmelding.

Help me  
Offline Martijn - 28/07/2009 19:01
Avatar van Martijn Crew PHP waarom zit je zo vast aan dat php? Wij hebben in geen 1 stukje php geplaatst, en vermeld waar je deze code wel moet plaatsen.

<body onload="maakZin('dit is een zin')">

Al zie ik nu een fout de while zet gewoon in sneltreinvaart de letters neer zo snel dat je t niet gaat merken, daar moet nog even een intervalletje in, ik heb ff geen tijd
Offline stefan1987 - 30/07/2009 21:18 (laatste wijziging 31/07/2009 13:30)
Avatar van stefan1987 Nieuw lid Hoi Allemaal,

Na een paar uurtjes proberen, typen, proberen typen 
Is het me uiteindelijk gelukt om mijn "typ een tekst" script te maken in Javascript 

Ik gebruik php enkel nog om de values aan te maken
(dit heb ik nodig in mijn script)
en verder is het nu puur javascript.

Ik ben benieuwd wat jullie er nu van vinden,
en of het in alle browsers werkt.

Hier is de code:

  1. <?
  2. $zin = "Dit is een zin die letter voor letter getypt wordt";
  3. $aantal_letters = strlen($zin) +1;
  4. ?>
  5.  
  6. <html>
  7. <head>
  8. <script language="JavaScript">
  9. var tellen=0;
  10. var aantal="<? echo $aantal_letters;?>";
  11. var zin ="<? echo $zin;?>";
  12.  
  13. function StartMetTypen(){
  14. window.setInterval("TypDeTekst()", 70);
  15. }
  16.  
  17. function TypDeTekst(){
  18. if(tellen < aantal){
  19. var letter = zin.substring(0,tellen);
  20. document.getElementById('typen').innerHTML = letter;
  21. tellen = tellen+1;
  22. }else{
  23. clearInterval();
  24. }
  25. }
  26.  
  27. </script>
  28. </head>
  29. <body onload="StartMetTypen();">
  30. <div id=typen></div>
  31. </body>
  32. </html>


Hier is een link om het script te proberen:
http://www.radiostereo.nl/test.php
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.198s