人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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】のように書く必要があるのか、別の書き方があるのか教えて下さい。

よろしくお願いします。

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:hoge IE6 IE7 JavaScript エラー
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● quina
●35ポイント

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

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

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

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

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

}

◎質問者からの返答

ありがとうございます。

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

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


2 ● GoldenDawn
●35ポイント

また、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 節に入れるかとかでしょう。

◎質問者からの返答

ありがとうございます。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ