あなたはすでに を使用しているので、classList
十分に新しいブラウザに対応しているだけだと思います。そのためaddEventListener()
、すべてのonclick
属性を削除して、次のようにすることをお勧めします。
document.addEventListener('click',function(e){
if (e.target.tagName === "IMG") {
var imgs = document.getElementsByTagName('IMG');
for (var i = 0; i < imgs.length; i++)
if (imgs[i] != e.target)
imgs[i].classList.remove('foo');
e.target.classList.toggle('foo');
}
}, false);
デモ: http://jsfiddle.net/q3aRC/3/
つまり、単一のクリック ハンドラーをドキュメントにバインドし (または、画像が共通の親を共有している場合は、画像の親要素にバインドできます)、クリックしたアイテムが関心のある要素の 1 つであるかどうかをテストします (つまり、 、img) そしてそこから... JS はほぼ同じ長さになりますが、html は短くてきれいになります。id
元の関数以外に使用していない場合は、実際に属性も削除できclicked()
ます。
以前getElementsByTagName()
は、さらに別の方法を示しただけでしたが、(他の回答のように) getElementsByClassName()
orquerySelectorAll()
の方がおそらくより良いオプションです。しかし、これは簡単に切り替えることができます。