【问题标题】:displaying the right ID显示正确的 ID
【发布时间】:2018-05-17 12:09:21
【问题描述】:

我在处理这段代码时遇到了问题。我正在为自己制作一个论坛来测试我的技能(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>';

【问题讨论】:

  • 你检查过$app-&gt;get_reactie($actieftopicid)返回的数据是否正确吗?
  • HTML id 必须是唯一的。 id="abcId"错了

标签: javascript php foreach


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您的 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>';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 2020-12-11
      • 2013-08-04
      • 2017-02-12
      • 2014-02-24
      • 1970-01-01
      相关资源
      最近更新 更多