php array in innerHTML

Status
Niet open voor verdere reacties.

junior6

Gebruiker
Lid geworden
25 aug 2009
Berichten
18
Yuwkes,

kheb een probleem met de volgende code:
[JS] <script type="text/javascript">
function vraag(){
if(document.getElementById){document.getElementById("vraag").innerHTML='<?php echo $q[0]; ?>'};
</script>[/JS]
In feite komt het er op neer dat er als er eenmaal op een knop is gedrukt de functie vraag wordt uigevoerd en dat er in de plaats van de inhoud van de span met id= vraag een vraag verschijnt die in een array is opgeslagen.
De array ziet er als volgt uit:
PHP:
	<?php
		$q[0]="Wat is het wereld`s grootste meer?";
		$q[1]="Hoeveel keer is de maan kleiner dan de zon?";
		$q[2]="Welke vlag heeft de meeste kleuren?";
		$q[3]="Welk land heeft de langste kustlijn?";
		$q[4]="Wat is het grootste land met maar 1 tijdzone?";
		$q[5]="Wat is de hoofdstad van Cuba?";
		$q[6]="Wat zijn de bekendste exportproducten van Cuba?";
		$q[7]="Welke kleur hebben de sterren in de Chinese vlag?";
		$q[8]="Welk volk woont in Kosovo?";
		$q[9]="Welke zee ligt tussen Arabië en Afrika?";
		$q[10]="Hoe heette New York vroeger?";
		$q[11]="Welk land bestaat niet? Azerbeidzjan, Ivoorkust, Jacamaca of Vaticaanstad";
	?>
 
Wat is precies het probleem?
Er ontbreekt trouwens een sluit-accolade aan het einde van de functie "vraag".
 
Ik volg je vraag niet. [edit]oh noes, kruispost[/edit] Overgens, ik denk dat ik het snap, in dat geval: het probleem is dat je een server-side taal mixed met een client-side taal. PHP wordt eerst ge-echo-ed, dan pas wodt de resulterende Javascript uitgevoerd.

Je kan je arrays beter zo doen:[JS]var arr = ['item', 'item 2', '...'];[/JS]wat het ook veel makkelijker maakt in combinatie met php. Als je een php-array wilt omzetten, moet je dat dus wel eventjes eerst doen:

PHP:
<?php

   // vraagarray.php
   //zeg for the sake of the example dat je array in $arr staat:

   echo "var mijnArray = [";

   for($i=0; $i<count($arr); $i++)
   {
      echo '"' . $arr[$i] . '"';

      if($i < count($arr) - 1)
      {
          echo ",";
      }
   }

   echo "];";

?>
en je php/html/javascript file dan:
PHP:
<script>

   <?php

      include('vraagarray.php');

      // hier komt dus de array uit-geechoe'd (sic) tot een var mijnArray.

   ?>

   function vraag()
   {
      document.getElementById('vraag').innerHTML = mijnArray[0];
   }

</script>
 
Laatst bewerkt:
PHP:
echo "var mijnArray = [";
 
   for($i=0; $i<count($arr); $i++)
   {
      echo '"' . $arr[$i] . '"';
 
      if($i < count($arr) - 1)
      {
          echo ",";
      }
   }
 
   echo "];";

Kun je ook vervangen door:

PHP:
echo 'var mijnArray = ["', implode ( '", "', $arr ), '"]';
 
@EB: moeten die comma's geen punten zijn? Zo dus:
PHP:
echo 'var mijnArray = ["' . implode ( '", "', $arr ) . '"]';

anywho, je hebt helemaal gelijk, een stuk strakker!
 
Mogen punten zijn, maar performance-wise zijn komma's beter. Je kunt het zien als meerdere argumenten die je aan de "echo-functie" passt... Anders moeten er eerst meerdere strings aan elkaar geplakt worden en dat schijnt langer te duren (heb ik me eens laten vertellen)...
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan