如何在php echo中使用innerHTML中的Id或类并从数据库中获取值?

How to use innerHTML by Id or class in php echo and get value from database?

提问人:Maruli Davin 提问时间:7/30/2022 最后编辑:Maruli Davin 更新时间:7/30/2022 访问量:389

问:

按下按钮后,我正在使用 javascript 替换验证码值,代码如下所示:

document.getElementById('showCode').addEventListener('click', function() {
  const icon = this.querySelector('i');
  if (icon.classList.contains('fa-eye')) {
    icon.classList.remove('fa-eye');
    icon.classList.add('fa-eye-slash');
    document.getElementById('validCode').innerHTML = 'validationcodehere';
  } else {
    icon.classList.remove('fa-eye-slash');
    icon.classList.add('fa-eye');
    document.getElementById('validCode').innerHTML = '●●●●●●●●●●●●●●';
  }
});
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container mt-4">
        <span id='validCode'>●●●●●●●●●●●●●●</span>
        <button id='showCode' class='btn btn-secondary btn-sm ms-4'><i class="fa fa-eye"></i></button>
    </div>
</body>
</html>

上面的代码运行良好,但放在 php echo 中时无法运行。我使用的 php7 代码如下所示:

<?php
while ($row=mysqli_fetch_array($query))
    {
    echo "<tr>";
    echo "<td>".$row['id']."</td>";
    echo "<td>".$row['orderid']."</td>";
    echo "<td>".$row['validation']."</td>";
    echo "<td><span id='validCode'>●●●●●●●●●●●●●●</span><button id='showCode' class='btn btn-secondary btn-sm ms-4'><i class='fa fa-eye'></i></button></td>";
    echo "<td>".$row['order_date']."</td>";
    echo "</tr>";
    }
?>

我的问题是如何使其在 php echo 会话中运行,以及如何从数据库“.$row['validation']] 中获取值的值。谢谢。"document.getElementById('validCode').innerHTML = 'validationcodehere';"validationcodehere

javascript php jquery mysql mysqli

评论


答:

1赞 imvain2 7/30/2022 #1

我去掉了 ID 并用类代替。

我还去掉了跨度中的点,并将验证码放在数据属性中。

使用 classList.toggle,我打开/关闭图标类。

我使用重复函数为代码中的每个字符显示一个点。

let showCodeBTN = document.querySelector(".btn-showCode");
showCodeBTN.addEventListener("click", showCode);
  const codeEl = document.querySelector("[data-code]");
  codeEl.innerHTML = "●".repeat(codeEl.getAttribute("data-code").length);


function showCode() {

  const code = codeEl.getAttribute("data-code");

  const icon = this.querySelector('i');
  const showingCode = (icon.classList.contains('fa-eye-slash'));
  icon.classList.toggle("fa-eye");
  icon.classList.toggle("fa-eye-slash");
  codeEl.innerHTML = (showingCode) ? "●".repeat(code.length) : code;
}
<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
</head>

<body>
  <div class="container mt-4">
    <span data-code="12345678"></span>
    <button class='btn-showCode btn btn-secondary btn-sm ms-4'><i class="fa fa-eye"></i></button>
  </div>
</body>

</html>

PHP回声:

echo "<td><span data-code='{$row['validation']}'></span><button  class='btn-showCode btn btn-secondary btn-sm ms-4'><i class='fa fa-eye'></i></button></td>";

评论

0赞 Maruli Davin 7/30/2022
嗨 Imvain2,感谢您的回答,这太棒了。但是,当我在 php echo 中尝试它时,它不起作用
0赞 imvain2 7/30/2022
@MaruliDavin 我为您的回声添加了更新的代码
0赞 Maruli Davin 7/30/2022
感谢您的帮助,但它仍然无法在 php 中工作。当我输入php echo时,即使是更改图标的切换功能也不起作用。但是您编写的代码在php之外运行良好,我的PHP版本7.4.13