2016-04-12 7 views
0

Meine Funktion generiert eine Tabelle mit $ Daten aus einer MySQL-Abfrage um Unterforum Namen anfordert.Ausführen von PHP-Code auf einem onclick-Ereignis

function forum_links($data){ 
//print_r($data); 
echo "<div id = 'sub_forums'> 
     <table>"; 
foreach($data as $name){ 
echo " 
     <tr> 
      <td id='sub_forum_image'> 
      <img src='images/favicon_text.ico' alt='MWGA'> 
      </td> 
      <td id='sub_forum_td'> 
      <a href='forum?forum={$name[0]}'>{$name[0]}</a> 
      </td> 
     </tr>"; 
} 
echo "</table></div>"; 
} 

Wenn der Text im Überprüfung angeklickt wird, wenn das Varibale Forum eingestellt und gesetzt, wenn ich will die div

<?php 
    if (isset($_GET['forum'])) { 
    echo "is set"; 
    ?> <script>sub_forum_hide();</script> <?php 
    } 
?> 
'sub_forums' verstecken

Der Fehler Ich erhalte

Uncaught TypeError: Cannot read property 'style' of null.

Ich denke, das hat etwas mit der Sequenzierung meines Dokuments zu tun, weil ich die gleiche hide style.display = "none" in anderen Teilen verwendet habe.

function sub_forum_hide(){ 
    document.getElementById("sub_forum").style.display = "none"; 
} 

Ich habe versucht, die sub_forum_hide() auf der Unterseite meines Dokuments bewegen, aber ich immer noch die gleichen Fehler. Nur als Referenz funktioniert das "is set" -Echo, wenn ich auf den Text klicke.

+5

ich zu bemerken, dass in Ihrem Top-Schnipsel Sie die ID 'sub_forums' (Plural) setzen und später dann versuchen, verstecke es mit der ID 'sub_forum' (singular). – claywhipkey

+1

[IDs müssen eindeutig sein] (http://stackoverflow.com/questions/5611963/can-multiple-different-html-elements-have-the-same-id-if-theyre-different-eleme), speziell weil es verursacht Probleme in [JavaScript] (https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) und CSS, wenn Sie versuchen, mit diesen Elementen zu interagieren. –

+0

Zusätzlich (basierend auf Ihrem Titel) ist die einzige Möglichkeit, PHP-Code mit JavaScript auszuführen, die Verwendung von AJAX. –

Antwort

1

Vom Aussehen Ihres Codes .. Sie haben kein Element mit ID "sub_forum", weshalb es null ist. Stattdessen haben Sie eine div mit ID = „sub_forums“ ... So Ihre Funktion sollte eigentlich

function sub_forum_hide(){ 
    document.getElementById("sub_forums").style.display = "none"; 
} 

Wahrscheinlich ein Tippfehler auf Ihrer Seite sein.

Beim nächsten Mal versuchen Sie, den Fehler zuerst zu verstehen ... würde Ihnen eine Menge Ärger ersparen und beim Debuggen helfen.

+0

wusste, dass es etwas Einfaches sein musste :) Vielen Dank !! seit über einer Stunde starrte dies auf –

+0

Froh, @CarlWirkus zu helfen ... Vergessen Sie nicht, es als die Antwort zu markieren :) – AceKYD

0

Ändern Sie sub_forums in sub_forum.

function forum_links($data){ 
//print_r($data); 
echo "<div id = 'sub_forum'> 
     <table>"; 
foreach($data as $name){ 
echo " 
     <tr> 
      <td id='sub_forum_image'> 
      <img src='images/favicon_text.ico' alt='MWGA'> 
      </td> 
      <td id='sub_forum_td'> 
      <a href='forum?forum={$name[0]}'>{$name[0]}</a> 
      </td> 
     </tr>"; 
} 
echo "</table></div>"; 
} 
1

Sieht aus wie Ihr Titel nicht wirklich zu Ihrem Problem passt.

Um das tatsächlich beschriebene Problem zu lösen, müssen Sie die ID Ihrer divs korrigieren, wie andere darauf hingewiesen haben.

Wenn Sie einige php von Javascript ausführen möchten, müssen Sie Ajax verwenden

Verwandte Themen