Javascript:更改src不起作用

Javascript: Changing src not working

本文关键字:不起作用 src 更改 Javascript      更新时间:2023-09-26

我正在调用这样的函数:

<img src="/images/icons/info.png"
width="18" height="18" class="iconbutton" alt="Add to Library" 
onclick="AddLibrary(12345,this.id); this.onclick=null;" />

然后,该函数将12345发布到另一个脚本,然后应该更改图标图像:

function AddLibrary(pibnval,thisid) {
    $.post('/addlibrary.php', {
        pibn: pibnval
    }, function() {
    thisid.setAttribute('src', "/images/icons/tick.png");
    });
};

POST工作得很好,但图像不会改变。

我还尝试过:document.getElementById(thisid).src = "/images/icons/tick.png";但这也没用。

有什么想法吗?

thisid只是一个字符串,而不是一个元素。将您的onclick更改为:

onclick="AddLibrary(12345,this); this.onclick=null;"

(我删除了.id)和您的thisid变量名为img或类似的名称(只是为了避免误导):

function AddLibrary(pibnval,img) {
    $.post('/addlibrary.php', {
        pibn: pibnval
    }, function() {
    img.setAttribute('src', "/images/icons/tick.png");
    });
};

其他注意事项:

  1. 没有理由使用setAttribute,图像元素具有src属性。

  2. 您没有将;放在函数声明之后。

  3. 一致的缩进可以帮助您和其他人阅读代码。

因此:

function AddLibrary(pibnval,img) {
    $.post('/addlibrary.php', {
        pibn: pibnval
    }, function() {
        img.src = "/images/icons/tick.png";
    });
}

试试这个-$('#'+thisid).attr("src",'/images/icons/tick.png');

你的图像也必须是图像吗?因为你可以把它做成一个带有背景图像的div,并用css设置它的宽度和高度,然后像这个一样改变css背景

$('#'+ thisid).css({'background':'/images/icons/tick.png'});

我宁愿用JS附加处理程序(而不是内联),但您可以将代码更改为:

HTML

<img src="/images/icons/info.png"
width="18" height="18" class="iconbutton" alt="Add to Library" 
onclick="AddLibrary(event, 12345);" />

JS-

function AddLibrary(e, pibnval) {
    var _this = e.target;
    $.post('/addlibrary.php', {
        pibn: pibnval
    }, function() {
        _this.setAttribute('src', "/images/icons/tick.png");
        _this.onclick = null;
    });
}