显示正确的ID

时间:2018-05-17 12:09:21

标签: javascript php foreach

我遇到了这段代码的问题。我正在为自己制作一个论坛,以测试我的技能(looks like this),现在我无法显示正确的ID。我需要ID的东西,但是当我在这里测试这个代码时,它会为每个反应显示1个相同的ID。我不知道为什么?也许<script>在foreach中不起作用?希望有人可以帮我解决这个问题。

$reacttie = $app->get_reactie($actieftopicid);
foreach ($reacttie as $reactie) {
echo '
<div class="timeline-footer">
  <script type="text/javascript">
   function printIt(){
     alert(document.getElementById("abcId").value);
  </script>

  <form name="formName">
    <input type=hidden id="abcId" name="abcName" value="'.$reactie['id'] .'"/>
    <input class="btn btn-primary btn-xs" type=button value="Reageer" onclick="printIt()" />
  </form>
</div>';

2 个答案:

答案 0 :(得分:2)

这是一个经典错误:您正在创建具有相同ID的多个元素,因此document.getElementById("abcId")将始终返回具有此ID的第一个元素。

答案 1 :(得分:0)

你的php部分是正确的,但你的javascript代码是错误的。目前,您有许多具有相同ID的元素,getElementById仅返回第一个匹配的元素。相反,你应该是阶级和兄弟关系或类型。

除此之外,你多次定义printIt函数,这也不是一个好主意 - 将函数移到循环之外(或更好的事件,将整个javascript逻辑移动到外部.js文件中)

在您的情况下,还有一种更简单的方法,只需将id传递给函数:

$reacttie = $app->get_reactie($actieftopicid);
echo '<script type="text/javascript">
   function printIt(id){
     alert(id);
  </script>';

foreach ($reacttie as $reactie) {
echo '
<div class="timeline-footer">    
  <form name="formName">
    <input type=hidden name="abcName" value="'.$reactie['id'] .'"/>
    <input class="btn btn-primary btn-xs" type=button value="Reageer" onclick="printIt(\''.$reactie['id'] .'\')" />
  </form>
</div>';