1

リンクがあり、リンクをクリックするとフラグ変数の値を 1 に設定したいのですが、可能ですか? お気に入り

<a id='ctr' href='#' onclick='flag=1'> Hello </a>    

また、 onclick イベントの関数を同じ行に記述する方法も、代わりに

<a id='ctr' href='#' onclick='call_this();'> Hello </a>
 function call_this(){
     flag=1;
 }

onclick 行自体に call_this 関数を含めることはできますか?

EDIT2

今、私はこのようなコードを持っています。onclick イベント内では、値が $selectedId に正しく格納されます。しかし、その値をURLに渡そうとすると、正しい値が得られません。for ループの最後の値が渡されます。

 <script type="text/javascript">

 $(document).ready(function(){

 <?php foreach ($Forms as $r): ?>

     $("<a id='<?php echo $ctr['Form']['id'];?> href='#' onclick='flag=1'> Hello </a>").appendTo("#header").click(function(){
     <?php $selectedId=$r['Form']['id'];?>
     alert("selId: "+<?php echo $selectedId;?>);//here the selected value is echoed
 });
 </script>

 <a href="http://localhost/Example/new/export?height=220&width=350&id=<?php echo $selectedId;?>" class="thickbox button" title= "Export" >Export</a> 

ここでは、id は 4 として渡されます。これは、php for ループの最後の値です。

4

6 に答える 6

8

アンカー要素に ID があるため、簡単に見つけてイベントをバインドできます。

単純なアクションの場合は、グローバル スコープで関数を宣言するのではなく、無名関数を使用できます。

window.onload = function () {

  // Bind events...

  document.getElementById('ctr').onclick = function () {
    flag1 = 1;
    return false; // stop the browser from following the link
  };

  // ....
};

編集: 編集を見ると、ページが読み込まれると jQuery の document.ready イベントが発生します。この時点ではまだフラグがnull割り当てられています。

アンカー要素を DOM に追加するだけで、if ステートメントを作成することに注意してください。

jQuery を使用しているため、それを使用してクリックイベントを新しく作成した要素にバインドできます。

var flag=null;

$(document).ready(function(){
  $('<a id="ctr" href="#"> Hello </a>').appendTo('#header').click(function () {
    flag = 1; 
    e.preventDefault(); // stop the browser from following the link
  });
});

appendTo関数は新しく作成された DOM 要素を返すため、これを行うことができ、イベントをそれに直接バインドできます。

于 2009-08-26T06:18:46.847 に答える
2

はい、少し調整するだけで機能するはずです。ただし、JavaScript を使用するためのベスト プラクティスは、すべての JavaScript を外部ファイルに格納することです。これにより、HTML が「クリーン」に保たれ、編集が容易になり、何が起こっているのかをよりよく把握できます。

ファイル my.html の内容:

<html>
    <head>
        <title>hello :-)</title>
        <script language="javascript" src="my.js" type="text/javascript"></script>
    </head>
<body>
    <a href="#" id="ctr">Set var value</a><br />
    <a href="#" id="check">Check var value</a>
</body>
</html>

ファイル my.js の内容:

var flag = 0;

function init()
{
    var ctr_element = document.getElementById('ctr');
    ctr_element.onclick = function()
    {
        flag = 1;
        return false;
    }

    var check_element = document.getElementById('check');
    check_element.onclick = function()
    {
        alert(flag);
        return false;
    }
}

window.onload = init;

PS。クラスを使用すると、変数を誤って上書きするリスクが少なくなります。(特に、サードパーティのライブラリなども使用する場合)。しかし、自分のスキルに十分な自信を持っている別の日にそれを残すことをお勧めします.

クロスブラウザー互換のコードを作成することに興味がある場合は、prototype、jquery、dojo などのライブラリーを調べてみてください。(他にもあります)それらはあなたのjsライフをとても簡単にします:-)

于 2009-08-26T06:42:05.677 に答える
1

はい、はい。

#1 をテストするために、次のようなアラートを追加しました。

<a id='ctr' href='#' onclick='flag=1; alert(flag);'>Hello</a>

番号 2 をテストするために、アラートも追加しました。

<a id='ctr' href='#' onclick='function call_this() { flag=1; alert(flag); } call_this();'>Hello</a>
于 2009-08-26T06:19:37.500 に答える
0

それは可能ですが、良い考えではありません。

インライン イベントでコードを分散させると、複雑でわかりにくいコードになります。

于 2009-08-26T06:15:27.947 に答える
0

はい、onclickでフラグを設定できます(ただし、このフラグはグローバルである必要があります)

<script>var flag=null;</script>
<a id='ctr' href='#' onclick='flag=1'> Hello </a>

はい、関数をインラインで定義できます。

<a id='ctr' href='#' onclick='function call_this(){flag=1;};call_this();'> Hello </a>

しかし、これは正しい設計ではないことを警告しなければなりません。js ファイルにすべての JavaScript を含めることをお勧めします。そして、ハンドラのみを設定します。

于 2009-08-26T06:15:46.790 に答える
0

要素の onclick プロパティに両方の JS コードを含めることができますが、通常、それは醜い解決策であり、避けるべきです。すべての JS スクリプトを別のブロックまたは別のファイルに配置し、そこから呼び出すことをお勧めします。

于 2009-08-26T06:16:17.337 に答える