2017-02-06 2 views
0

JavaScriptがimg srcおよびのクリックイベントです。Javascript Button SRC

私は、ボタンの画像が2つあります。は、ressedとunpressedです。

btn1_On = new Image(); 
btn1_On.src = "../img/numpad/03_Button_1_Push.jpg"; 

btn1_Off = new Image(); 
btn1_Off.src = "../img/numpad/03_Button_1_No_Push.jpg"; 

とhtml:

<div class="Numpad_1" onmousedown="btnPress('btn1');return true;" 
    onmouseup="btnRelease('btn1');return true;" 
    onclick="btnPress('btn1');return true;"> 
    <img src="..\img\numpad\03_Button_1_No_Push.jpg" id="btn1" /> 
</div> 

私はHTMLで各ボタンの機能を乗算したい `tを、私はとリリース BTN プレスに関数を作成します。

function btnPress(btn) { 
    document.getElementById(btn).src = btn+'_On'.src; 
} 

function btnRelease(btn) { 
    document.getElementById(btn).src = btn + '_Off.src'; 
} 

ですから、問題は、btn + '_ On'.src - イメージのパスを初期化できません(未定義)。

任意のヘルプのThnx。

PS:私はいくつかの制限を持っているあなたは、ウィンドウ/グローバルコンテキスト内のオブジェクトbtn1_Onを作成した場合、それは、しかし、あなたは

document.getElementById(btn).src = window[btn+'_On'].src; 

を使用し、IE 6

+0

側注:あなたが唯一たい画像のパスを保存している場合、あなたは 'Image'オブジェクトを必要としない、IE9 <ブラウザ – Satpal

+0

を支援停止します。テキストは文字列として保存することができます。 –

+1

@BlazeSahlzen、あなたは提案が有効でない場合、OPは画像をプリロードするためにそれを使用している必要があります。 – Satpal

答えて

2

上で実行する必要がありますオブジェクトを作成してプロパティにアクセスすることをお勧めします。

var obj = {}; 
obj.btn1_On = new Image(); 
obj.btn1_Off = new Image(); 

ブラケット表記を使用して、文字列に基づくプロパティを取得します。

​​
+0

素晴らしい、thnxですが、なぜオブジェクトを作成するのがいいですか? – Aleksey

+0

@Aleksey、私はずっとメンテナンスしやすく、デバッグとパフォーマンスがはるかに良いでしょう。 – Satpal

+0

ok、thnx @Satpal – Aleksey