2016-04-12 2 views
0

Моя функция генерирует таблицу с $ data из запроса mysqli, запрашивающего имена подфайлов.работает PHP-код в событии onclick

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>"; 
} 

Когда текст щелкнул Проверяется varibale форум установлен чат и если установлено, я хочу, чтобы скрыть DIV «» sub_forums

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

Ошибка я получаю

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

Я полагаю, что это имеет какое-то отношение к последовательности моего документа, потому что я использую то же самое скрытие style.display = "none" в других частях.

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

Я попытался переместить sub_forum_hide() в нижней части моего документа, но я все еще получаю ту же ошибку. Только для справки «установлено» echo работает, когда я нажимаю текст.

+5

Я заметил, что в вашем верхнем фрагменте кода вы устанавливаете идентификатор 'sub_forums' (множественное число), а потом пытается спрячьте его с помощью идентификатора 'sub_forum' (единственного числа). – claywhipkey

+1

[ID должен быть уникальным] (http://stackoverflow.com/questions/5611963/can-multiple-different-html-elements-have-the-same-id-if-theyre-different-eleme), в частности потому, что он вызовет проблемы в [JavaScript] (https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id) и CSS при попытке взаимодействия с этими элементами. –

+0

Кроме того (на основе вашего названия) единственный способ запустить PHP-код с помощью JavaScript - это использовать AJAX. –

ответ

1

С точки зрения вашего кода .. У вас нет элемента с идентификатором «sub_forum», поэтому он является нулевым. Вместо этого у вас есть DIV с ID = «sub_forums» ... Так что ваша функция должна быть на самом деле

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

Вероятно, опечатка с вашей стороны.

В следующий раз, сначала попытайтесь понять ошибку ... сэкономит вам массу неприятностей и поможет в отладке.

+0

знал, что это должно быть что-то простое :) Спасибо большое! смотрел на это больше часа –

+0

Рад помочь @CarlWirkus ... Не забудьте отметить это как ответ :) – AceKYD

0

Изменить sub_forums на 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

Похоже, что ваше название действительно не соответствует вашей проблеме.

Чтобы решить проблему, которую вы фактически описали, вам нужно будет исправить идентификатор ваших div, как указывали другие.

Если вы хотите выполнить некоторые PHP от JavaScript, вы должны будете использовать Ajax

Смежные вопросы