1

我一直在寻找一种方法来做到这一点。

我使用 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?

4

4 回答 4

1

您正在为每个条目创建一个名为“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 ?>">
于 2013-03-18T16:15:06.387 回答
0

在我看来,您似乎也在循环中创建您的 javascript 函数,因此它只会触发其中一个(您正在创建多个具有相同名称的函数。它应该如何知道使用哪一个)。您应该创建 1 个 javascript 函数并将 id 作为 aa 参数传递给它

<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
 ?>
于 2013-03-18T16:15:21.090 回答
0

总的来说,这是一种糟糕的方法。您应该避免将处理程序内联写入,除非您有特定的情况,这是唯一的方法。如果您将处理程序附加到有问题的元素上会更好(工作小提琴-无论如何对于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 查询和侦听器附件。

于 2013-03-18T16:17:54.110 回答
-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>

您的按钮将不起作用,因为您已添加注释标记<!---->功能。如果您需要帮助,请发表评论。

另外,你能在评论中澄清你的问题吗?那时我们可以更好地帮助您。

于 2013-03-18T16:09:26.397 回答