1

をアンカーのhrefを取得:クロームで、次のHTMLをonclickのトリガーで

<div> 
    <a href='#link1' onclick='func()' >Link 1</a> 
    <a href='#link2' onclick='func()' >Link 2</a> 
    <a href='#link3' onclick='func()' >Link 3</a> 
</div> 

function func() { 
    var href = ??; 
    if(href.match(/#link1/)) { 
     ... 
    } 
} 

(?とIE)が

var href = window.event.target.href; 

このコードを使用することができますが、Firefoxでwindow.event存在しません。

addEventListenerでイベントがアタッチされた場合は、eを引数として持つことができます。 htmlで宣言されたときにイベントをonclick関数に渡す方法はありません。

答えて

1

あなたはonclickのハンドラ自体に、引数としてイベントを取得しません。

<a href="#link1" onclick="func(event)" >Link 1</a> 

をし、その後、あなたはfuncでイベントターゲットを見ることができます。だからあなたが行うことができます。

+0

未解決!クロムとfirefoxでテストされた - 広告として動作します。トリガーとは、htmlスクリプトまたはaddEventListener関数を使用して同じ方法で動作することを意味します。 –

4

thisを関数に渡し、hrefプロパティに直接アクセスします。 thisは、呼び出しを行った要素を参照します。 falseを返すこともできます。これにより、クリックされたリンクがナビゲートされなくなります。

http://jsfiddle.net/qjXVy/

function func(elem) { 
    alert(elem.href); 
    return false; 
} 

 

<div> 
    <a href="#link1" onclick="func(this)" >Link 1</a> 
    <a href="#link2" onclick="func(this)" >Link 2</a> 
    <a href="#link3" onclick="func(this)" >Link 3</a> 
</div> 
+0

「this」はアンカーではなく、「func」が 'addEventListener'で呼び出されたときだけであると思いましたか? –

+0

'this'はonclickハンドラにあるので、クリックされた要素を参照します。これを関数に渡します。関数内の 'this'はウィンドウを参照します。 – mrtsherman

+0

ありがとう!私が遭遇したjavascriptの 'this'のバリエーションの数を数えることはできません! –

関連する問題