Javascript:更改src无法正常工作

时间:2013-02-20 09:53:18

标签: javascript jquery

我正在调用这样的函数:

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

该函数然后将POSTS 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"; 但这也不起作用。

有什么想法吗?

3 个答案:

答案 0 :(得分: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. 一致的缩进可以帮助您和其他人阅读您的代码。

  4. 所以:

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分: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;
    });
}