您可以将this
标记用于HTML标记的onclick吗?
这是我的JS代码...
function changeImage() {
this/*<-- right there <--*/.src=a;
}
document.getElementsByTagName('img').onclick = function(){
changeImage();
} ;
难道我做错了什么?
最佳答案
您可以使用 .call()
方法在this
的上下文中调用该函数。
在这种情况下,您将使用:
changeImage.call(this)
Example Here
function changeImage() {
this.src = 'http://placehold.it/200/f00';
}
document.getElementsByTagName('img')[0].onclick = function(){
changeImage.call(this);
};
作为附带说明,
getElementsByTagName
返回元素的实时HTMLCollection。您需要将onclick
处理程序应用于该集合中的元素。如果要将事件侦听器应用于元素集合,请遍历它们并添加事件侦听器,如下所示:
Updated Example
function changeImage() {
this.src = 'http://placehold.it/200/f00';
}
Array.prototype.forEach.call(document.getElementsByTagName('img'), function(el, i) {
el.addEventListener('click', changeImage);
});
或者您可以简化它:
Example Here
Array.prototype.forEach.call(document.getElementsByTagName('img'), function(el, i) {
el.addEventListener('click', function () {
this.src = 'http://placehold.it/200/f00';
});
});