1

我正在调用这样的函数:

<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 POSTS 到另一个脚本,然后应该更改图标图像:

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"; 但这也没有用。

有任何想法吗?

4

3 回答 3

5

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";
    });
}
于 2013-02-20T09:55:42.053 回答
0

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

您的图像也必须是图像吗?因为您可以将其设置为带有背景图像的 div 并在 css 中设置其宽度和高度,然后像这样更改 css 背景

$('#'+ thisid).css({'background':'/images/icons/tick.png'});
于 2013-02-20T09:57:17.203 回答
0

我宁愿用 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;
    });
}
于 2013-02-20T10:07:59.860 回答