2013-02-20 25 views
1

我打电话这样的功能:的Javascript:更改SRC不工作

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

任何想法?

+0

哪里是的'id'您你传递给函数的'img'标签? – 2013-02-20 09:55:38

+0

你应该为你的图像设置一个ID。 – jbl 2013-02-20 09:56:03

+0

@jbl:不需要,它不用于任何事情。 – 2013-02-20 09:57:39

回答

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"; 
    }); 
} 
+0

美丽,谢谢! – Alasdair 2013-02-20 10:01:17

0

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

此外,您的图片必须是图片吗?因为你可以与背景图像使之股利,并设置其在CSS的宽度和高度则只是改变CSS背景这样

$('#'+ thisid).css({'background':'/images/icons/tick.png'}); 
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; 
    }); 
}