我一直在寻找一种方法来做到这一点。
我使用PHP while循环从数据库中获取一些变量:
<?php while ($row = mysql_fetch_array($query)) {
$id = $row["ID"];
?>
<script type="text/javascript">
<!--
function go_there()
{
var id= "<?php echo $id ?>"
var where_to= confirm("Are you sure you want to delete?");
if (where_to== true)
{
window.location="index.php?p=delete&id=" + id;
}
else
{
}
}
//-->
</SCRIPT>
<td><form><INPUT TYPE="button" value="Go!" onClick="go_there()"></form></td></tr>
<? } //end while
?>
有时候我得到10个结果,然后我做10个Go!底部。但是当我来到删除页面时,$ is变量关闭导致与最后结果相同,无论底部的女巫我按下..
关于如何解决这个问题的任何想法,所以我得到了确认框,并且仍然保留了正确的ID被删除?
答案 0 :(得分:0)
您正在为每个条目创建一个名为“go_there”的全局函数,因此只保留最后一个。而不是那样,只创建一个函数,并从按钮上的属性中获取“id”值。
function go_there(button)
{
var id= button.getAttribute("data-id");
var where_to= confirm("Are you sure you want to delete?");
if (where_to== true)
{
window.location="index.php?p=delete&id=" + id;
}
}
然后:
<INPUT TYPE="button" value="Go!" onClick="go_there(this)" data-id="<?php echo $id ?>">
答案 1 :(得分:0)
在我看来,你正在循环中创建你的javascript函数,所以它只激发其中一个(你创建了多个具有相同名称的函数。它应该如何知道使用哪一个) 。你应该创建1个javascript函数并将id作为参数传递给它
<script type="text/javascript">
function go_there(id)
{
var where_to= confirm("Are you sure you want to delete?");
if (where_to== true)
{
window.location="index.php?p=delete&id=" + id;
}
else
{
}
}
</SCRIPT>
<?php while ($row = mysql_fetch_array($query)) {
$id = $row["ID"];
echo '<td><form><INPUT TYPE="button" value="Go!" onClick="go_there(<?php echo $id; ?>)"></form></td></tr>'
} //end while
?>
答案 2 :(得分:0)
总的来说,这是一种糟糕的方式。你应该避免使用内联的处理程序,除非你有一个特定的情况,这是唯一的方法。如果你把一个处理程序附加到问题中的元素(working fiddle - 对于firefox无论如何......)会更好......
<!-- output our inputs with the id value in an attribute data-id-value -->
<?php while ($row = mysql_fetch_array($query)): $id = $row["ID"]; ?>
<td><form><INPUT class="go-button" TYPE="button" value="Go!" data-id-value="<?php echo $id ?>"></form></td></tr>
<?php endwhile; ?>
<script type="text/javascript">
var goButtons = document.querySelectorAll('input.go-button'), // select all out buttons
// define our handler function
goThere = function (event) {
// get the id the we encoded from php from our data attr
var id = event.target.getAttribute('data-id-value');
if(confirm('Are you sure you want to delete?')) {
// if confirm is true then redirect to the delete url
window.location = "index.php?p=delete&id=" + id;
}
};
// loop over the buttons and attach the handler
for (var i = 0; i < goButtons.length; i++) {
goButtons[i].addEventListener('click', goThere);
}
</script>
这里的问题是,这不一定是跨浏览器。这通常是人们使用像jQuery或类似库这样的库的原因之一,这样他们就不必规范化dom查询和监听器附件。
答案 3 :(得分:-2)
这是一个更正过的脚本。
<?php while ($row = mysql_fetch_array($query)) {
$id = $row["ID"];
?>
<SCRIPT language="JavaScript">
<!--
function go_there()
{
var id= "<?php echo $id ?>"
var where_to= confirm("Are you sure you want to delete?");
if (where_to == true)
{
window.location="index.php?p=delete&id=" + id;
}
else
{
}
}
-->
</SCRIPT>
<td><form><INPUT TYPE="button" value="Go!" onClick="go_there()"></form></td></tr>
您的按钮无效,因为您已将评论标记<!--
和-->
添加到该功能中。如果您需要帮助,请发表评论。
另外,你能在评论中澄清你的问题吗?我们可以更好地帮助你。