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 を別のスクリプトにポストし、アイコン イメージを変更することになっています。

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

ハンドラーを(インラインではなく)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 に答える
0

これを試してください - $('#'+ thisid).attr("src", '/images/icons/tick.png');

また、あなたのイメージはイメージでなければなりませんか?背景画像のあるdivにして、その幅と高さをcssで設定してから、cssの背景を次のように変更することができるためです

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