首页 > 解决方案 > I cant open a popup for a specific div in while loop (Javascript PHP)

问题描述

When I clicked the div with id ooo no his specific div with id row['user_name'] won't popup

 <!-- this code is inside a while loop -->

 <div id="ooo"  onclick="testado('.$row['usr_name'].')" class="link dropdown">
<h5 class="text-left" >'.$row['usr_name'].'</h5>
<img src="crownh.png"  class="float-right"  />  
<div id="'.$row['usr_name'].'" class="modal">
  <!-- Modal content -->
  <div ><span class="close">&times;</span>
<p> '.$row['usr_name'].'</p> </div> </div>


</div>


<!-- this is the javascript -->

 function testado(a) { // This function gets called when clicking the button
        var modal = document.getElementById(a);
                modal.style.display = "block";

}

Thanks

标签: javascriptphpjquery

解决方案


您的代码工作正常:

https://jsfiddle.net/7w34fnp3/1/

我认为问题只是第一个中缺少一些撇号div。尝试这个:

<div id="ooo" class="link dropdown" onclick="testado(\''.$row['usr_name'].'\')">
  <h5 class="text-left">'.$row['usr_name'].'</h5>
  <img src="crownh.png" class="float-right" />
  <div id="'.$row['usr_name'].'" class="modal">
    <!-- Modal content -->
    <div><span class="close">&times;</span>
      <p>'.$row['usr_name'].'</p>
    </div>
  </div>
</div>

我认为这是因为您使用单引号 ( echo '<...') 来回显此输出,而您正在做onclick="testado(matt)"的不是onclick="testado('matt')".

有很多更有效的方法可以使用 onClick 侦听器而不是 onclick 事件来执行此代码。jQuery 在这里提供帮助。您还应该ooo动态命名 div,因为您当前正在创建具有相同 id 的 div 负载。

此外,您应该练习缩进代码以使其更易于调试。


推荐阅读