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」というグローバル関数を作成しているため、最後のエントリのみが残ります。その代わりに、関数を1 つだけ作成し、ボタンの属性から「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つだけを起動します(同じ名前で複数の関数を作成しています。どの関数を使用するかを知るにはどうすればよいですか)。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
 ?>
于 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 などのライブラリを使用する理由の 1 つであり、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 に答える