我正在调用这样的函数:
<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";
但这也不起作用。
有什么想法吗?
答案 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");
});
};
其他说明:
没有理由使用setAttribute
,图像元素具有src
属性。
您不要在函数声明之后放置;
。
一致的缩进可以帮助您和其他人阅读您的代码。
所以:
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;
});
}