【问题标题】:getElementById(php variable) is not workinggetElementById(php 变量)不起作用
【发布时间】:2019-08-23 08:38:35
【问题描述】:

我有一个作为 mysql 查询的结果创建的列表和几个具有唯一 ID 作为变量的 <li>

当我想将此 ID 放入 getElementById(<?php $id?>) 时,它不起作用。我已经尝试了所有的报价,但没有奏效。

这里是代码;

<ul >
<?php
  $query= mysqli_query($con,"Select * from database order by date ASC");
  while($row = mysqli_fetch_array($query)){?>
  <li onclick="showMlstone(this.value)" value="<?php echo $row[id];?>"><?php echo $row[name];?><p id=<?php echo $row[id];?>></p></li>
  <script>
  function showMlstone(int) {
    var xhttp;
      if (int == "") {
      document.getElementById(<?php echo $row[id];?>).innerHTML = "";
      return;
    }
    xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
      document.getElementById(<?php echo $row[id]?>).innerHTML = this.responseText;
      }
    };
    xhttp.open("GET", "get.php?q="+int, true);
    xhttp.send();
  }
  </script>
<?php
</ul>

感谢您的帮助

【问题讨论】:

    标签: javascript php html mysql


    【解决方案1】:

    不确定所有这些工作/应该如何工作,但我只是想指出您在 php echo 中的这一行缺少分号:

    document.getElementById(<?php echo $row[id]?>).innerHTML = this.responseText;
    

    而你的 php while 没有右括号。

    【讨论】:

    • 谢谢。我放了分号,但它仍然不起作用。我的问题是我无法将变量分配给 getelementbyid()。当我从 chrome review 中检查它时,似乎 getelementbyid() 中的值是正确的,但它不起作用。
    • while 循环的右括号呢?
    • 另外,你不能写 $row[id] , id 是 mysql 列吗?在那种情况下,去 $row["id"],它是一个 js int 吗?在那种情况下,我真的无法做到这一点,除了将 php 数组分解为 js 对象
    【解决方案2】:

    用引号试试:

    document.getElementById("<?php echo $row['id']?>").innerHTML = this.responseText;
    

    【讨论】:

      【解决方案3】:
      1. 如果您有 *.php 文件,其中包括 php 代码和其他不同的语言 - 使用打开和关闭 php 标签。
      <?php
      // php code here
      ?>
      
      <!-- Some html here -->
      

      您还可以使用短语法 - 结合 html 和 php 代码的最佳方式:

      <ul>
          <li><?= $variable ?></li>
      </ul>
      

      尝试使用&lt;?= 代替&lt;?php echo - 这是一样的,但first 更好 并且更具可读性

      1. 在这种情况下,您可以将 php 代码移动到文件顶部,然后使用 php 变量插入下面的 html 代码中,如下所示:
      <?php
      
      $query = mysqli_query($con,"Select * from database order by date ASC");
      
      $rows = mysqli_fetch_array($query);
      
      ?>
      
      <ul>
          <? foreach($rows as $row): ?>
              <li>
                  <?=$row['id']?>
              </li>
          <? endforeach ?>
      </ul>
      
      

      不要忘记写$row['id'] 而不是$row[id],并且做所有可以优化你的代码的事情,让它对你和stackoverflow中的其他人来说更具可读性:)

      对您有用的链接:

      【讨论】:

        【解决方案4】:

        试试这个。它可能有效

        document.getElementById('<?php echo $row[id]; ?>').innerHTML = this.responseText;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-22
          • 2013-11-10
          相关资源
          最近更新 更多