我的 PHP 脚本查询数据库并将行作为 li 元素返回到 jQuery 对话框中的 div。它通过在 PHP while 循环中构建一个数组来处理查询行响应来实现此目的。每个 li 元素都有一些数据、一个 HTML 按钮和一些在单击按钮时在该 li 元素上执行的 javascript。
如果我为每个 li 元素编写具有相同 id 的“错误 HTML”,则 javascript 会执行,但仅在第一个 li 元素上执行。当我为每个 li 元素编写具有唯一 id 的“良好 HTML”时,我无法执行 JavaScript。我研究并尝试了很多东西,但找不到任何如此复杂的东西来解决这个问题。我应该怎么办?这是精简的代码。问题似乎出在冗长的 $error_ListActives 行中,但我愿意接受建议。
$rowCount = 0;
while ($row = mysql_fetch_array($fetch)) {
$storedStreetAddress = $row["streetAddress"];
$storedCity = $row['city'];
$error_NumberOfActives = "<li>Welcome back. You have . . .</li>";
$errorMessages[0] = $error_NumberOfActives;
$idMaker = "inactive" . $rowCount;
$error_ListActives = "<li> $storedStreetAddress, $storedCity $idMaker
<button type='button' id=$idMaker onclick='makeInactive()'>Pause this</button>
<script type='text/javascript'>function makeInactive()
//do stuff
{document.getElementById($idMaker).innerHTML='Inactive Completed';}
</script> </li>";
$errorMessages[] = $error_ListActives;
$rowCount++;
}
foreach( $errorMessages as $statusMessage ) {
echo $statusMessage;
}
请具体说明,代码很有帮助。我没有很好地遵循这方面的一般说明,因为我是 PHP 新手。
最佳答案
这里最终会遇到很多问题,因为您是在 while 循环内编写 javascript 函数。这意味着您将获得同一函数的多个副本,并且只有最后一个才会真正触发!
要解决此问题,请为 makeInactive(id)
编写一个通用 JavaScript 函数,然后使用您正在处理的元素的 id
调用它。
在 php 循环之外:
<script type='text/javascript'>function makeInactive(id)
//do stuff
{document.getElementById(id).innerHTML='Inactive Completed';}
</script>
然后将 php 循环更改为:
while ($row = mysql_fetch_array($fetch)) {
$storedStreetAddress = $row["streetAddress"];
$storedCity = $row['city'];
$error_NumberOfActives = "<li>Welcome back. You have . . .</li>";
$errorMessages[0] = $error_NumberOfActives;
$idMaker = "inactive" . $rowCount;
$error_ListActives = "<li> $storedStreetAddress, $storedCity $idMaker
<button type='button' id='$idMaker' onclick='makeInactive($idMaker)'>Pause this</button>
</li>";
$errorMessages[] = $error_ListActives;
$rowCount++;
}
关于php - 如何获取 PHP 脚本以在 li 元素中生成 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16239074/