アプリ版:「スタンプのみでお礼する」機能のリリースについて

undefinedを表示させない方法はありますか?(javascript)

コードを入力して、文字を表示させているのですが、
以下のソースになります。
その時に、イベント処理をonkeyupにしていて、
入力しているのと同時に表示させています。
その時に、1とか10とか入力している途中に、
undefinedが表示されてしまいます。
空白でもいいのですが、表示させない方法はありますか?
教えて下さい。


<SPAN>とinnerHTMLを使用しています。

<HTML>
<BODY>
<SCRIPT LANGUAGE=JavaScript>
<!--
function sample(f)
{
var sample = new Array()
sample['100'] = 'りんご' ;
sample['101'] = 'オレンジ' ;
sample['102'] = 'メロン' ;
document.getElementById('ans').innerHTML = sample[f.code.value] ;
}
// -->
</SCRIPT>
<FORM NAME=f>
<INPUT NAME=code SIZE=4 onkeyup="sample(this.form)"> <SPAN ID="ans"></SPAN>
</FORM>
</BODY>
</HTML>

A 回答 (2件)

配列要素の存在をif文で判定して、入力されたキーを持つ配列要素があるときにはその配列要素の内容を、入力されたキーを持つ配列要素が未定義の場合には空白を、それぞれ表示させるようにする方法を取るのが良いのではないかと思います。


具体的には、下記のようなソースではいかがでしょうか。

<HTML>
<BODY>
<SCRIPT LANGUAGE=JavaScript>
<!--
var sample1 = new Array()
sample1['100'] = 'りんご' ;
sample1['101'] = 'オレンジ' ;
sample1['102'] = 'メロン' ;

function sample(f){
tgt=document.getElementById("ans");
if (sample1[f.code.value]){
tgt.innerHTML = sample1[f.code.value] ;
}
else {
tgt.innerHTML = "";
}
}
// -->
</SCRIPT>
<FORM NAME=f>
<INPUT NAME=code SIZE=4 onkeyup="sample(this.form)"> <SPAN ID="ans"></SPAN>
</FORM>
</BODY>
</HTML>

質問文のソースを元に、改変しました。 配列名と関数名が重複していたので配列名は変更してあります。 また、関数の処理ごとに配列を再定義するのも、個人的にどうかと思えたので、配列の定義は関数から出してあります。
こうすると、if文の条件で指定された配列が定義されているものかどうかを判定し、定義されている場合にはspan id="ans"を配列要素の内容で書き換え、そうでない場合にはspan id="ans"の表示を消去するようになると思います。

参考まで。
    • good
    • 1
この回答へのお礼

すみません、回答いただきまして、
有難うございました。
ソースまで書いていただいて、
わかりやすかったです。

お礼日時:2005/03/18 23:54

ーーーー質問のコード抜粋ーーーーー



function sample(f)
{
var sample = new Array()
sample['100'] = 'りんご' ;
sample['101'] = 'オレンジ' ;
sample['102'] = 'メロン' ;
//変更 Start
if(isNaN(parseInt(f.code.value,10)){
document.getElementById('ans').innerHTML =""
}else
document.getElementById('ans').innerHTML =
sample[f.code.value] ;
}
//変更 End
}
これで空白が表示します。
    • good
    • 0
この回答へのお礼

回答有難うございます。
ソースまで書いていただいて、
わかりやすかったです。

お礼日時:2005/03/18 23:55

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