Показать / скрыть содержимое XML, нажав в цикле foreach - PullRequest
1 голос
/ 17 февраля 2012

Я расстроен этим.То, что я пытаюсь закодировать, - это простая программа чтения XML, которая позволяет пользователю выбирать, какие данные показывать или скрывать.

Сначала этот код отображает заголовки XML-файла и когда пользователь щелкает заголовок, дату и времядолжен отображаться под заголовком.

Проблема в том, что независимо от того, по какому заголовку щелкают, он отображает / скрывает только дату и время первого заголовка под первым заголовком.

<script type="text/javascript">
   function toggle(element) {
   document.getElementById(element).style.display =     
(document.getElementById(element).style.display == "none") ? "" : "none";
}
</script>

<?php
$doc = simplexml_load_file('data.xml');
if($doc == TRUE){
foreach($doc->channel->item as $child){
   $title = $child->title;
   echo '<table>';
   echo '<tr>';
   echo '<td><a href="javascript:toggle(\'shit\')">'.$title.'</a></td></tr>';
   echo '<tr id="shit" style="display: none;">';
   echo '<td>';
   echo date("d.m.Y H:i", strtotime($child->pubDate));
   echo '</td></tr>';
   echo '</table>';
}
}
?>

Ответы [ 3 ]

0 голосов
/ 17 февраля 2012

Вам нужно будет назначить разные (уникальные) идентификаторы каждому TR, который вы хотите показать / скрыть.Прямо сейчас вы выводите много TR с одним и тем же идентификатором «дерьмо».

Вам придется изменить свой JavaScript, чтобы также использовать правильный идентификатор.

0 голосов
/ 17 февраля 2012

Как говорили другие, вам нужно иметь уникальный идентификатор для каждого элемента (на который вы хотите получить ссылку).Самый простой способ - просто добавить счетчик к выбранному имени, в данном случае «дерьмо», вот модифицированная версия:

0 голосов
/ 17 февраля 2012

это потому, что ids должно быть уникальным на странице, поэтому

 document.getElementById(element) 

всегда возвращает первый соответствующий элемент, даже если на странице больше элементов с одинаковым идентификатором

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...