2012-03-04 7 views
1

が、私はこのコードどのように私は、コード内のリンクをクリックしたときに、このリンクを参照

<body> 
<div id="div1"> 
What is 2+2? 
</div> 
<div id="div2"> 
<a href="answer.html" id="answer_link">Get the answer</a> 
</div> 
</body> 

その後、javascriptを

var d1 = document.getElementById("div1"); 
var a_link = document.getElementById("answer_link"); 
a_link.onclick = function() 
{ 
    d1.innerHTML = "That is easy, the answer is <strong>4</strong>!"; 
    return false; 
}; 

ので、このコードを見つけますページに私を取ることを防ぎますかdiv1内のhtmlを変更し、リンクが参照するページをロードしませんが、イベントリスナーを使用したい場合はどうしたらいいですか? 私はこの

a_link.addEventListener('click', function(){ 
    d1.innerHTML = "That is easy, the answer is <strong>4</strong>!"; 
    return false; 
}, false); 

書くが、私は上記のコードの小さな作品と同じように動作するイベントリスナーを使用することができますどのように参照をロードするためのリンクを防ぐことはできませんか?

答えて

3

使用e.preventDefault()

aLink.addEventListener('click', function(e){ 
    d1.innerHTML = "That is easy, the answer is <strong>4</strong>!"; 
    if (e && e.preventDefault) { 
     e.preventDefault(); 
    } else { 
     window.event.returnValue = false; // guess who - IE 
    } 
}, false); 

あなたがしている場合は、コードのIEの一部のみが必要とされているので、実際には、IEの古いバージョンでも、addEventListener()をサポートしていません。 attachEvent()と同じコールバック関数を使用していますが、これはaddEventListener()と同じです。

+0

:o実際には動作しますか?私はeパラメータからどこに来てくださいか教えてください。あなたの助けを感謝します:) – Alejandro

+0

eパラメータは、イベントをトリガするときにaddEventListenerが行うものの一部です。それはイベントオブジェクトです。残念ながら、IEの古いバージョンはそれを渡しません。 – jfriend00

+0

okおかげさまでもう一度jfriend00私は言語を学んでいますので、これは大変申し訳ありませんでしたが大変申し訳ありませんでした。 – Alejandro

1

prevenDefaultを試しましたか?これは、クリックイベントの機能を制御するのに役立ちます。ここ

ドキュメンテーション - あなたのコードでもhttps://developer.mozilla.org/en/DOM/event.preventDefault

、。 <a>タグの参照から、a_linkという名前のvarとaLinkという名前のvarを使用します。これはタイプミスか、実装の変更ですか?通常のブラウザと古いIEブラウザでevent.returnValueため

0

アンカーにロードしない場合、アンカーにURLが必要なのはなぜですか? "#"か何かを使うことができませんでしたか?

+0

hrefの '#'はページをジャンプさせる可能性があります。他の回答と同様に、リンクの処理をブロックするのが最善です。 – jfriend00

+0

ああ、ok:/私は2年のようなウェブサイトのためにコード化していない:p – Snailer

関連する問題