Autor Zpráva
jirikovovideni
Profil
Zdraví poradí te mi kde mám chybu,už fakt nevím v html to fungovalo,ale v php se mi to neotevírá.díky
<script type="text/javascript">  
function ukaz(u){
el = document.getElementById(u).style;
el.display = (el.display == 'block')?'none':'block';
}
</script>

 <?php
echo '<table > ';
echo '    <tr>  ';
        echo '<td><a href="#" onclick="ukaz(clanek1)">klikni</a></td>  ';
    echo '    </tr></table> ';
echo '<div style="display: none;" id=(clanek1)>   ';
    echo 'ahoj';
        
    echo '    </div>  ';
echo '    </table>      ';  ?>
Joker
Profil
jirikovovideni:
Uvedený kód z hlediska PHP funguje. Koneckonců to je jen triviální sekvence echo příkazů a to PHP tam nic nedělá.

To JS přepínání nefunguje z toho důvodu, že kolem ID elementu se v HTML nedělají závorky, ale uvozovky, takže tak, jak je to napsané, tam žádný element s id clanek1 není.
weroro
Profil
<?php
    echo '<table>';
    echo '<tr>';
    echo '<td><a href="#" onclick="ukaz(\'clanek1\')">klikni</a></td>';
    echo '</tr></table>';
    echo '<div style="display: none;" id="clanek1">';
    echo 'ahoj';
    echo '</div>';
    echo '</table>';  
?>
jirikovovideni
Profil
weroro:
Tak nevím kde dělám chybu zkopíroval jsem kód a stále mi to nefunguje.Pak jsem zkusil onclick="ukaz"clanek1"" a taktéž to nefunguje
Joker
Profil
weroro:
Šel bych přesně opačnou cestou (než přidávat PHP echo všude).
V dané ukázce PHP nemá žádný smysl (kdyby tam vůbec nebylo, výsledek bude stejný) a vede k nepřehlednému a těžko udržovatelnému kódu.
A dvojnásob bych nevypisoval každý řádek kódu jako zvláštní echo, což ještě dál komplikuje údržbu.

Když už vypisovat kus HTML kódu přes PHP, nejlepší je podle mě HEREDOC syntaxe:
<?php
  echo <<<KOD
  <table>
    <tr>
      <td><a href="#" onclick="ukaz(clanek1)">klikni</a></td>
    </tr></table>
  </table>
KOD;


jirikovovideni:
Pak jsem zkusil onclick="ukaz"clanek1"" a taktéž to nefunguje

No, tak na tomhle místě se to zrovna změnit nemělo. Jenom HTML id, ne ta JS funkce v onclick.
mimochodec
Profil
Joker:
nejlepší je podle mě HEREDOC syntaxe:

Každému podle jeho vkusu, ale musím říct, že heredoc beru jako takovou kuriozitu, která se objevuje jen na fórech jako ukázka toho, co divného by taky šlo použít, kdyby o to někdo stál.
werorův zápis je mi o dost bližší a není to jen kvůli zvýrazňovačům. Jen uvozovky a apostrofy mám radši opačně.
jirikovovideni
Profil
Už jsem z toho jelen,omlouvám se ale nejsem zběhlý v php,jen chci něco jednoduchého vytvořit.Takže se zeptám takhle by měl vypadat celý kód ? protože mi to nefunguje
<script type="text/javascript">  
function ukaz(u){
el = document.getElementById(u).style;
el.display = (el.display == 'block')?'none':'block';
}
</script>
<?php
    echo '<table>';
    echo '<tr>';
    echo '<td><a href="#" onclick="ukaz(\'clanek1\')">klikni</a></td>';
    echo '</tr></table>';
    echo '<div style="display: none;" id="clanek1">';
    echo 'ahoj';
    echo '</div>';
    echo '</table>';  
?>
Joker
Profil
mimochodec:
Podle mých zkušeností je zápis podle [#3] weroro jen stěží použitelný.

- Snad žádný programátorský nástroj, a ostatně ani většina programátorů, se v takhle zapsaném HTML kódu nedokáže orientovat (ve smyslu např. odkud kam sahá určitá značka).
- V kódu je nutné escapovat uvozovky, takže zejména pokud ten kód je mix HTML a JS, je výsledek nečitelný.
- Oba předchozí body jsou neustálý zdroj chyb (vlastní zkušenost).
- Těžko se v tom kódu dělají změny.
- Problematicky se mění členění kódu na řádky.
- Až jednou autor konečně dojde k tomu, že je lepší ten kód mít v externí HTML šabloně, bude se to těžko převádět.

HEREDOC syntaxe se mezi HTML a PHP přenese jednoduše přes zkopírovat-vložit.

musím říct, že heredoc beru jako takovou kuriozitu, která se objevuje jen na fórech jako ukázka toho, co divného by taky šlo použít, kdyby o to někdo stál
Ano, protože začátečníci a patlalové to neznají a pokročilejší programátoři to zase nepotřebují, protože nemívají v PHP skriptech větší bloky HTML kódu.

Což nic nemění na tom, že pokud už někdo trvá na tom mít ve skriptu delší blok HTML kódu (moje první rada byla z toho to PHP úplně odstranit), HEREDOC je daleko lepší, než sekvence příkazů echo.


jirikovovideni [#7]:

protože mi to nefunguje
Tak bude problém někde jinde, mně uvedený kód funguje.
Byť k němu mám výše uvedené výhrady a vedle nich ještě tu, že dát proměnné obsahující style objekt název „el“ je poměrně nešťastné (alespoň mně „el“ evokuje proměnnou obsahující element, takže jsem v první chvíli el.display automaticky vnímal jako chybu).
mimochodec
Profil
jirikovovideni:
Funguje: http://kod.djpw.cz/nwlb

Něco děláš špatně. Pouštíš to někde, kde funguje php? Co se ti zobrazí jako zdroják stránky?
Kubo2
Profil
jirikovovideni:

Neviem, čo je s tým klientským kódom za problém, pretože u mňa to normálne funguje.
jirikovovideni
Profil
Děkuji všem funguje to - ještě bych měl dotaz jak to udělat,když kliknu na klikni,ať mi okno nevyskočí nahoru ale jen se otevře a zůstane na místě

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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