javascript - すべてのタグを選択してonclick イベントを登録するには?
6 に答える
onclick
必要に応じて各要素に個別にではなく、要素の配列に属性を設定しています。また、使用後に定義show
しています。
var elts = document.getElementsByTagName('a');
var show = function() { alert('hahahha'); }
for (var i = elts.length - 1; i >= 0; --i) {
elts[i].onclick = show;
}
elts.length
毎回テストするよりも、配列を後方に反復する方が効率的です。順方向に繰り返す必要がある場合は、配列の長さを変数に格納して効率を高めます。
<a> tags
次のように、 onclick イベントをすべて個別に割り当てる必要があります。
var s=document.getElementsByTagName('a');
var show = function(){
alert('hahahha');
}
for (var i=0;i<s.length;i++)
{
s[i].onclick = show;
}
document.getElementsByTagName('a')
配列を返すので、これを試してください:
var arr = document.getElementsByTagName('a');
for(var key in arr){
arr[key].onclick = show;
}
テストしていませんが、動作するはずです
はい、javaスクリプトとjqueryの両方を使用して上記の問題を解決できます。
Javascript:
var aLinks=document.getElementsByTagName('a'); // returns array of all <a> link objects
//Function to be bind with link object
var show = function(){
alert("Now Show function has been binded...hahahhaha..!");
}
//Now we have to bind click event with each link object.
for(var i=0;i<aLink.length;i++){
aLinks[i].onclick=show;
}
すべてのリンクタグを任意のイベントにバインドする別の代替方法は、jQueryを使用することです。これは、この種のバインドの問題に最も簡単な方法を提供します。
ただし、そのためにはまず、jquery.js javascriptファイルを含める必要があります(最新バージョンを使用することをお勧めします)。
jQuery:
$(function(){
$("a").click(function(e){
alert("Now Show function has been binded...hahahhaha..!");
});
});
Jqueryを使用してみませんか。javascriptで最も簡単なソリューションになります。
以下のように使用できます
$("a").on("click", function(event){
alert('hahahha');
});
このドキュメントを参照してください。Jquery1.7以降を使用できます。