No.4
- 回答日時:
punchan_jpさんへ
すみません。よく読めば確かにさんのおっしゃっているように受け取ることができます。不慣れなのか、読解力が乏しいのか、申し訳なく思います。
katsudonさん、punchan_jpさんへ
ご迷惑をおかけしました。お詫び申し上げます。
No.3
- 回答日時:
antigen さん、
えっと、議論するつもりはないんですが、document.all が論理値
でないことは知っています。私の回答からは読みとれなかったでしょ
うか? katsudon さんには伝わったようなので、安心していたので
すが。
で、ie=!!document.all がブラウザに依存するとも言っていません。
javascript の機能をもつどのブラウザでも動作し、ie という変数
には true か false が正しく入ることでしょう。
ですが、ie という変数名は、ブラウザを判別する意図で使われて
いるのは明白ですよね?IEだけの拡張機能であるとは限らないのに、
ブラウザの判別目的で使っているので好ましくないと言っているの
です。
No.2
- 回答日時:
「ie=document.all」では「document.all」と同じものが「ie」に代入されてしまいます。
この場合は「ie.tags('TABLE')」のようにして使うことが出来ますね。「ie=!!document.all」はInternet Explorerあるいはそのコンパチブルかどうかを論理値(trueまたはfalse)として持っておくねらいがあるのでしょう。punchan_jpさんへ
JavaScriptでは文脈によってオブジェクトを適切に型変換するので「document.all」に対して文字列(Stringオブジェクト)が要求されれば、もし「document.all」が存在すれば「[object]」というような文字列となるでしょう。なければ「undefined」になるかもしれません。論理値(Booleanオブジェクト)を要求するような文脈では「document.all」が存在しなければ「false」となります。「document.all」がある場合には、例外を除いて「true」となります。「document.all」はInternet Explorerではコレクションクラスのオブジェクトとなっているので、こういった単純な型変換ではObjectオブジェクトのようにふるまうでしょう。「document.all」は論理値ではありません。
この場合「document.all」がInternet Explorerの拡張機能であるかどうかは問題ではなくて「document.all」というオブジェクトが存在するかどうかを調べるだけです。したがって「ie=!!document.all」はブラウザに依存するコードではありません。
No.1ベストアンサー
- 回答日時:
C言語では、論理演算の結果は整数の 1 か 0 しかとりませんので、
0以外なら1、0なら0となるような結果を得たいときに !! を使うこ
とがあります(可読性が下がるのであまりおすすめされませんが)。
JavaScript でこれをするということは、true に相当する値(つま
り、0 に相当しないなんらかの値をもっている)なら true そのも
の、0 に相当する値なら false そのものを得たいということでしょ
う。
document.all というのは IE4 以降の拡張機能だそうですので、そ
れ以前のものでは document.all の値は false 相当になります。
つまり、これに !! をつけることで、IE4 以降なら true、そうで
なければ false となるという判断材料にしていると思われます。
変数名の ie もそういう意図でしょう。
しかし、他のブラウザでそういう拡張がないという保証はないので、
ブラウザの種別の判断としてはいい方法とは思えませんけどね。
document.all の機能の有無を知りたいのであれば、正しい方法だ
と思います。
この回答へのお礼
お礼日時:2001/02/07 10:26
ありがとうございます!
IE4以上であれば
ie=document.allはieの中にオブジェクトが入る
ie=!!document.allはieの中にtrueが入るということでいいんでしょうかね?
む、むずかしい・・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- Chrome(クローム) グーグルクロムをマイクロソフト・エッジに切り替える方法 2 2022/06/20 10:08
- その他(プログラミング・Web制作) Latexに関する質問です。 3 2023/05/23 10:18
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- InternetExplorer(IE) Microsoft edgeのIEモードを解除したいのですが。 3 2023/04/09 13:51
- その他(パソコン・周辺機器) EXCELで「WEBオプションの対象ブラウザ」を変更する方法 2 2023/04/12 15:44
- InternetExplorer(IE) 既定のブラウザーを変更した場合、付随して処理が必要なことはありますか? 2 2022/03/25 16:04
- その他(教育・科学・学問) IUと単位は、同じですか? 例えば、写真の20単位は、20IUという意味ですか? https://w 1 2023/02/04 18:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScript window.openで開く...
-
TEXTAREA内の改行位置をinnerHT...
-
TexでΣの添え字の位置直し
-
乗換案内 VBAで操作したい
-
Null またはオブジェクトではあ...
-
javascriptの基本的なことだと...
-
XMLでのAttributeを持ったNode...
-
DOM要素を削除しても、イベント...
-
SafariのIframeで高さが取得で...
-
背景ランダム
-
このjavascriptのif文、条件式...
-
LaTeX:数式を等号揃えにする方法
-
IE操作で別タブ表示のHTMLソー...
-
jQueryのload()を使用して外部...
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
idを使わずにonclickで自身の要...
-
Linux バイナリ実行できない "...
-
Javaで避けるゲームを作ってい...
-
クリックすると上に開くアコー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScript window.openで開く...
-
このjavascriptのif文、条件式...
-
FireFoxのjavascriptで自動でキ...
-
DOM要素を削除しても、イベント...
-
javascriptの基本的なことだと...
-
文字を一文字ずつ表示
-
showModalDialogで開いた画面を...
-
Null またはオブジェクトではあ...
-
Javascriptのhtml出力についてa...
-
codejump 模写コーディングgall...
-
LaTeX:数式を等号揃えにする方法
-
javascriptのdocument.allにつ...
-
excle VBA とweb上の検索を利用...
-
Latexに関する質問です。
-
乗換案内 VBAで操作したい
-
JavaScriptのdocument.all("変...
-
Javascriptで定期的にF5を押す...
-
選択によってsubmitボタンの色...
-
スマホでフォームにフォーカス...
-
compatModeとは?
おすすめ情報