2009-08-26 7 views
1

リンクがあり、リンクをクリックしてフラグ変数の値を1に設定したいと思いますか?またonclick関数で値を設定できますか?

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

など、どのように私は、onclickをライン自体にcall_this機能を持たせることができる代わりに、

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

のように、同じ行のonclickイベントのための関数を書くには?

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は、php forループの最後の値である4として渡されます。

+0

正しい属性の構文attributename = "attribute-value"を使用できるようにするためには、実際に 'と'を使用する必要があります。

答えて

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を持つ方がいいです。ハンドラだけをセットアップしてください。

0

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

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文を作成することに注意してください。

あなたが新たに作成された要素にclickイベントをバインドするためにそれを使用することができます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要素を返しますので、あなたはこれを行うことができ、あなたがイベントをバインドすることができます直接それに。

+1

という6つの回答と、それらが何を話しているかを知る人だけが書くべきです。+1 –

+0

これは問題を引き起こします。 –

+0

@James:同意、編集済み... – CMS

1

はいとはい。#1をテストする

、私はこのような警告を追加:番号#2をテストするには

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

、私は同様の警告を追加しました:

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

はい、それが必要少しの調整で作業。しかし、あなたは、javascriptを使用するためのベストプラクティスは、ALLあなたのJavaScriptを外部ファイルに持っていることを知るべきです。これはあなたのhtmlを「きれいに」保ち、編集を容易にし、何が起きているのかをよりよく概観します。ファイルmy.htmlの

内容:ファイルmy.jsの

<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> 

内容:

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。より良い習慣は、クラスの使用であるため、誤って変数を上書きするリスクが少なくなります。 (特に3rdパートライブラリなどを使用している場合)。 しかし、あなたのスキルについて十分な自信があるときは、別の日にそれを残すことをお勧めします。

クロスブラウズ互換コードとして書くことに興味がある場合は、プロトタイプ、jquery、dojoなどのライブラリを見てみるとよいでしょう。

関連する問題