プロが教えるわが家の防犯対策術!

ボタンの数を増やすのに、switch文に代えられたらなと、思ったのですが
pushbutton関数の引数(0や1、2…)をswitch文のcase 0:~case 2:等にマッチさせる
案が浮かびません。
方法があるなら教えてください。よろしくお願いします。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>JavaScript training</title>
</head>
<body>
<form>
<input type="button" value="button0" onclick="pushbutton(0)">
<input type="button" value="button1" onclick="pushbutton(1)">
<input type="button" value="button2" onclick="pushbutton(2)">
</form>

<div id="push">message</div>

<script>
var num=0;
function pushbutton(num){
if(document.getElementById){
if(num==0){
document.getElementById("push").innerHTML="I pushed the button0";
}else if(num==1){
document.getElementById("push").innerHTML="I pushed the button1";
}else{
document.getElementById("push").innerHTML="I pushed the button2";
}
}
}
</script>
</body>
</html>

A 回答 (2件)

特定divのinnerHTMLを書き換えるだけならリストから参照させる方が楽でしょう



<script>
function pushbutton(num){
var list={
0:"I pushed the button0"
,1:"I pushed the button1"
,2:"I pushed the button2"
};
document.getElementById("push").innerHTML=list[num];
}
</script>
    • good
    • 0
この回答へのお礼

配列の勉強してた時、var obj = {name:'Test', old:40};みたいなのをやってた事を思い出しました。
switch以外にも楽ちんな方法って意外とあるモノですね。
ありがとうございます。

お礼日時:2015/08/28 13:05

この次元の話ならこうでいいのでは。


function pushbutton(num){
document.getElementById("push").innerHTML = "I pushed the button" + num.toString();
}

今後、条件に応じて処理を切り替えるために、switch()を利用したいならば、こう。
function pushbutton(num){
switch (num) {
case 0:
document.getElementById("push").innerHTML = "I pushed the button0";
break;

case 1:
document.getElementById("push").innerHTML = "I pushed the button1";
break;

case 2:
document.getElementById("push").innerHTML = "I pushed the button2";
break;
}
}

ボタンが増えるにつれて、switch()を追記してく形が汚くなっていって視認性が悪く嫌いならば、こう。
function pushedButton0()、function pushedButton1()などにそれぞれの動作を独立させて記述するので、3とか4とか増えても、関数だけ追加すれば済む。
function pushbutton(num){
eval("pushedButton" + num + "()");
}
function pushedButton0() {
document.getElementById("push").innerHTML = "I pushed the button0";
}
function pushedButton1() {
document.getElementById("push").innerHTML = "I pushed the button1";
}
function pushedButton2() {
document.getElementById("push").innerHTML = "I pushed the button2";
}
    • good
    • 0
この回答へのお礼

toString()は何か勉強した気がしますが、evalっていうのは知りませんでした。
switch以外にも意外と選択する方法ってあるモノですね。
ありがとうございます。

お礼日時:2015/08/28 13:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!