0

次のコードで:

<head>
<script type="text/javascript">
function popupMsg(msg) { 
  alert(msg);
}
</script>
</head>

<body>
<a href="http://www.xyz.com" onClick="popupMsg('This is pop up message')">xyz.com</a>
</body>

アンカータグ内で置き換えるonClickにはどうすればよいですか?addEventListener

アンカータグを割り当てに実行できますか?ID

おそらくこのようなもの:

<a href="http://www.xyz.com" something.addEventListener('click',popupMsg(SomeMsg),false)>xyz.com</a>
4

3 に答える 3

0

私はそれがこのようにサポートされているとは思わない。おそらく、onloadハンドラーを試すことができます。

<a href="" onLoad="(function(){ this.addEventListener("click", "fnName", false); })();">Link</a>

上記のコードはテストされていません。

于 2012-04-10T10:06:34.063 に答える
0

querySelector(最新のブラウザー)を使用して、要素を選択できます。

var anchor = document.querySelector('a')

(これにより、ページの最初のリンクが選択されます)

次に、イベントを添付します。

anchor.addEventListener( ... );

これはいずれも要素に対してインラインで実行されません。これは間違いなく優れています...

だから次のようなもの:

    <script>
    // Function to add event listener to the anchor  
    function load() {   
       var anchor = document.querySelector('a')  
       anchor.addEventListener( ... );
     }  

    document.addEventListener("DOMContentLoaded", load, false);  

  </script>
于 2012-04-10T10:08:17.013 に答える
0

ブラウザは、さまざまな「レベル」でのイベントの添付をサポートしています。これは、W3C によって設定された標準です。DOM で「onclick」を介してイベントを直接アタッチする (つまり<a href="#" onclick="myFunction()">、レベル 0 になるか、JavaScript を使用して同じことを行う (つまり: document.getElementsByTagName('a')[0].onclick = myFunction;) はレベル 1 です。

レベル 0 および 1 の制限は、任意の 1 つのタイプのイベントについて、一度に 1 つのイベント ハンドラーのみを個々の要素にアタッチできることです。イベントのアタッチをより柔軟にするために、レベル 2 イベントでは、各要素の各タイプのイベントに対して複数のイベント ハンドラーを許可し、document.getElementsByTagName('a')[0].addEventListener('click', myFunction, true).

この 2 つを切り替えるための便利なガイドはhttp://jupiterjs.com/news/a-crash-course-in-how-dom-events-workにあります。

イベント ハンドラーをアタッチするために要素に ID を追加したくない場合、jQuery は、CSS セレクターを使用した DOM のクエリを非常に簡単にするライブラリです (上記のコードは になりますjQuery('a').click(myFunction))。詳細については、http://jquery.comを参照してください。

于 2012-04-10T10:15:32.713 に答える