您可以将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';
    });
});

09-17 04:48