Autor Zpráva
pema01
Profil
Ahoj,

potřebuji se zeptat jak se dá proměnná z parametru funkce jako argument do php pole. Názorně:

 <script type="text/javascript">
  function prover (var id){
     
      var prvek = document.getElementById(id);
      var odpoved = <?php echo $otazka[?????] ?>
      var spravnaOdpoved = <?php echo $spravnaOdpoved; ?>;
 }    
</script>

Namísto 5 otazníků potřebuji umístit var id (tedy parametr).

Díky za pomoc.
Jan Tvrdík
Profil
Základní kurz 15: Komunikace mezi PHP a JavaScriptem
pema01
Profil
takže to nelze?
pema01
Profil
tak mi to stále nefunguje, problém je totiž komplexnější:

chci udělat program, který když kliknete na správnou odpověď, text správné odpovědi se zabarví do červena. Jenže hází mi to, že metoda prover() is not defined.

            <form>
                <table border="1" style="text-align: center">
                    <tr><td colspan="2"><?php echo $otazka["obsah"]; ?></td></tr>
                    <tr><td id="0" onclick="prover('0')"><?php echo $otazka[0]; ?></td><td id="1" onclick="prover('1')"><?php echo $otazka[1]; ?></td></tr>
                    <tr><td id="2" onclick="prover('2')"><?php echo  $otazka[2]; ?></td><td id="3" onclick="prover('3')"><?php echo $otazka[3]; ?></td></tr>
                </table>
                
            </form>

      <script type="text/javascript">
              
  function prover (var id){
      
      var prvek = document.getElementById(id);
      var odpoved;
      
      switch (id){
          case "0":
           odpoved = <?php echo $otazka[0];?>;
          break;
          
          case "1":
           odpoved = <?php echo $otazka[1];?>;
          break;
          
          case "2":
           odpoved = <?php echo $otazka[2];?>;
          break;
          
          case "3":
           odpoved = <?php echo $otazka[3];?>;
          break;
      }
      
      var spravnaOdpoved = <?php echo $spravnaOdpoved; ?>;
      
      if (odpoved === spravnaOdpoved) {
           prvek.style.color="red"; 
        }
 
 }
    
</script>
weroro
Profil
Možno, že iba moja nevedomosť, ale nebude chyba v tejto časti?
function prover (var id){
var podľa mňa nemá čo v argumente funkcie robiť. Skús to odstrániť.
Davex
Profil
A řetězce patří do uvozovek.
pema01
Profil
no opravdu, funguje to!!!

já myslel, že se musí někde založit ta proměnná, tak jako je to v Javě (tam se dává int id). Díky moc


divné ovšem je, že mi to funguje pouze pokud odpovědi jsou číslice... na slova to nereaguje :'(
Davex
Profil
Jsou ta slova v uvozovkách?
pema01
Profil
no to nejsou, jak by také byla, když je vypisuji z proměnné v PHP...


ale stále moc nechápu kde je chyba... :(
weroro
Profil
pema01:
já myslel, že se musí někde založit ta proměnná, tak jako je to v Javě (tam se dává int id). Díky moc
int id neznamená založiť novú premennú ale to, že premenná v tom argumente je dátového typu integer (čiže číslo)
Javascript toto nevyžaduje a dokonca to nie je povinné (ale je to možné) ani u jeho mladšieho brata ActionScriptu 2, i keď ten je pomerne dosť silne typový.

Tie úvodzovky/apostrofy urobíš takto
      switch (id){
          case "0":
           odpoved = '<?php echo $otazka[0];?>';
          break;
          
          case "1":
           odpoved = '<?php echo $otazka[1];?>';
          break;
          
          case "2":
           odpoved = '<?php echo $otazka[2];?>';
          break;
          
          case "3":
           odpoved = '<?php echo $otazka[3];?>';
          break;
      }
      
      var spravnaOdpoved = '<?php echo $spravnaOdpoved; ?>';
_es
Profil
weroro:
Tie úvodzovky/apostrofy urobíš takto
Lepšie je asi použiť na to určenú funkciu json_encode, tak ako v už odkazovanom článku.
pema01
Profil
Děkuji moc, já s JS a PHP opravdu teprve začínám a bez vás nevím co bych dělal, na takové chyby bych jen tak nepřišel :D

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: