javascript について


IE6だと、
このように書いた場合、hoge に何らかの値が入っていれば問題ないですが、
空の場合だとエラーが発生してしまいます。
【1】
var hoge = document.getElementById('hoge').value;

このようにしてもエラーになります。
【2】
if(document.getElementById('hoge').value){
var hoge = document.getElementById('hoge').value;
}

値がある場合だけ処理を続けたいのですがどうすればよいのでしょうか。

また、IE7以降は問題なく動作しますが、中身があるかどうかも調べずに
【1】のように書くのは問題なのでしょうか。
【2】のように書く必要があるのか、別の書き方があるのか教えて下さい。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/07/08 22:22:28
  • 終了:2010/07/08 23:43:44

回答(2件)

id:quina No.1

quina回答回数5ベストアンサー獲得回数02010/07/08 23:12:01

ポイント35pt

どのようなエラーがでるんでしょうか?

間違っていたら申し訳ないのですが

おそらくですが、id="hoge"なオブジェクトがない場合エラーが出るのではないかと思います。

if(document.getElementById('hoge') && document.getElementById('hoge').value){

var hoge = document.getElementById('hoge').value;

}

id:worldtravel

ありがとうございます。

エラー内容は「オブジェクトがありません」です。

ご回答頂いたとおりで、思い通りに動きました。

2010/07/08 23:43:17
id:GoldenDawn No.2

GoldenDawn回答回数426ベストアンサー獲得回数812010/07/08 23:16:51

ポイント35pt

また、IE7以降は問題なく動作しますが、

当方の IE8 ではエラーで止まりますが……


【1】のように書くのは問題なのでしょうか。

期待通りに動かないのなら問題でしょう。


そもそも id が hoge の要素がないのが問題なので

if (document.getElementById('hoge')) {

か、より厳密に

if (document.getElementById('hoge') && document.getElementById('hoge').value) {

とするか、

try {
  if (document.getElementById('hoge')) {
    var hoge = document.getElementById('hoge').value ;
  }
} catch(e) {
  alert(e.message) ;
}

のように try ~ catch 節に入れるかとかでしょう。

id:worldtravel

ありがとうございます。

if (document.getElementById('hoge')) {

こちらを使うことにしました。

2010/07/08 23:43:40

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません