link
は から取得したコレクションで.getElementsByTagName('a')
、メソッドはありませんremoveAttribute
。ループ内の特定のアイテムを参照するには、次を使用する必要があります。
this.removeAttribute("class");
コレクションをループしてコレクション内の各項目を変更するという概念を既に理解しており、this
forを使用しているため、変更中のコレクション内の現在の項目を参照するためにsetAttribute()
引き続き使用する必要があります。this
イベント ハンドラー内の の値はthis
、イベントがバインドされている要素を参照します。これは、変更したいと思われる (そして既に変更されている) 要素です。
また、class
属性を削除してすぐに再設定するため、コードのポイントが正確にはわかりません。本当に属性を設定する必要がある場合は、そもそも削除する必要はありません。を変更/設定するだけの場合はclass
、次を使用します。
this.className = "selected";
編集ごとに、次を使用することをお勧めします。
window.onload = function() {
var link = document.getElementById('subMenu').getElementsByTagName('a');
for (var i = 0; i < link.length; i++) {
link[i].onclick = linkClickHandler;
}
};
function linkClickHandler() {
var links = document.getElementById("subMenu").getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
if (links[i] !== this) {
links[i].className = "";
} else {
links[i].className = "selected";
}
}
}
click
これにより、見つかったすべての要素のハンドラーがバインドされます。ハンドラーでは、すべての元の要素をループします。クリックされた要素のclass
asを設定し、他のすべての要素の as を設定します。"selected"
class
""