Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过在foreach循环中单击来显示/隐藏xml内容_Php_Javascript_Xml_Foreach - Fatal编程技术网

Php 通过在foreach循环中单击来显示/隐藏xml内容

Php 通过在foreach循环中单击来显示/隐藏xml内容,php,javascript,xml,foreach,Php,Javascript,Xml,Foreach,我对此感到沮丧。我试图编写的是一个简单的xml读取器,它允许用户选择显示或隐藏哪些数据 首先,此代码显示xml文件的标题,当用户单击标题时,标题下应显示日期和时间 问题是,无论单击哪个标题,它都只显示/隐藏第一个标题下第一个标题的日期和时间 <script type="text/javascript"> function toggle(element) { document.getElementById(element).style.display = (doc

我对此感到沮丧。我试图编写的是一个简单的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>';
}
}
?>

功能切换(元素){
document.getElementById(元素).style.display=
(document.getElementById(element.style.display==“无”)?“”:“无”;
}

这是因为
id
在页面上应该是唯一的,因此

 document.getElementById(element) 

始终返回第一个匹配元素,即使页面中有更多相同id的元素

您必须为每个要显示/隐藏的TR分配不同(唯一)id。现在,您正在输出多个具有相同id“狗屎”的TR


您还必须修改JavaScript以使用正确的ID。

正如其他人所说,每个元素都需要一个唯一的ID(您希望获得引用)。 最简单的方法是在您选择的名称中添加一个计数器,在本例中为“狗屎”,以下是修改后的版本:

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

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

函数切换(num){
document.getElementById(“shit”+num).style.display=
(document.getElementById(“shit”+num).style.display==“无”)?“”:“无”;
}

我所做的修复:
$I=0
echo'哦,是的,我忘了增加计数器,我的错。