2012-05-03 10 views
0

これが可能かどうかわかりませんが、コードをシンプルにしていますが、イメージを作成しようとしています。クリックすると新しいイメージに移動します。そのイメージをクリックすると元のイメージに戻ります。 私のコードは次のとおりです。onclick 2度目のクリック

function save_data() 
{ 
if (document.images.save.src == "saved.png") document.images.save.src="save.png"; 
if (document.images.save.src == "save.png") document.images.save.src="saved.png"; 
} 


<img id="save" onclick="save_data()" src="save.png"> 
+1

あなたは何を持っていますか? – hvgotcodes

+0

ちょうど役に立たない – Lan

答えて

3

簡略化することができます。

<img id="save" onclick="save_data(this)" src="save.png">` 

を使用して

あなたはこれが機能しない場合、それはsaved.pngがHTMLをしているパスにないという事実としなければならないかもしれ

function save_data(img) 
{ 
    img.src = /saved/i.test(img.src) ? 'save.png' : 'saved.png'; 
} 

を行うことができます。だから、完全なURLで試してみてください:

function save_data(img) 
{ 
    var imgpath = 'http://yoursite.com/imgpath/'; 
    img.src = imgpath + (/saved/i.test(img.src) ? 'save.png' : 'saved.png'); 
} 

注:クリックハンドラを割り当てる方が良い場合がありますunobtrusively(これもSO questionを参照してください)

+0

はい、これはより洗練されたソリューションです。 – Nadh

+0

ありがとう、大変感謝しています – Lan

0

if (document.images.save.src == "saved.png")から.srcはイメージだけではなく、ファイル名のフルパスを返しますので、これは、動作しません。たとえば、http://site.com/path/images/saved.pngです。

代わりに部分文字列を照合してみてください。

function save_data() 
{ 
if (document.images.save.src.indexOf("saved.png") != -1) document.images.save.src="save.png"; 
if (document.images.save.src.indexOf("save.png") != -1) document.images.save.src="saved.png"; 
} 
関連する問題