HTML文書中、Javascriptのdocument.writeで文章を挿入します。
■HTML------------------
<html><body>
文字列
<script language="JavaScript" src="message.js"></script>
文字列
</body></html>
■message.js------------
document.open();
document.write("<a href=\"---\">リンク<\/a>]");
document.close();
------------------------
この場合、message.js中はdocument.open();とdocument.close();を書くのは正しいことですか?
document.open();の意味を調べると「ドキュメントを開いて書込み可能にします。」とあって、その「ドキュメントを開く」という意味合いが理解できません。
http://www.tohoho-web.com/js/document.htm
上記でブラウザでは狙ったとおり(文字列が埋め込まれた状態)に表示されますが、
1、正しい書き方なのか
2、この場合document.open();の意味
を教えてください。
No.1
- 回答日時:
ドキュメントを開くというのは、要するに「ドキュメントへの書き込みを許可する」ということですねー。
そしてcloseで「書き込みを完了する」ということですねー。これは、ファイルアクセスとか通信とかでよく使われる手法ですが、それと同じ感覚で、ドキュメントへの書き込みも「許可」「書き込み」「完了」という手続きで行うようになっているんですねー。ですから、その書き方は正しい書き方ですよー。だけど、実際問題として、そんな書き方する人、いませんねー。なぜかというと、document.openとcloseは、省略できるからですよー。document.writeをした際に、まだopenしていなければ自動的にdocument.openされますし、closeしてなくともドキュメントの出力が完了すれば自動的にcloseされます。ですから、open/closeの存在すら知らない人のほうが多いと思いますよー。
JavaScriptはそーゆーのが多いですねー。つまり「本当はこうするんだけど、別にしなくてもいい」というのですねー。たとえば変数を使うとき、「x = 100」とか書きますねー。だけど、変数は最初に「var x」と変数宣言を書いて変数の使用を開始するのですねー。だけど、JavaScriptは「var xしてなければ、最初に変数xを使うときに勝手にvar xしてくれる」ので、みんなvarなんか使わずに書いちゃいますねー。それと同じですよー。
分かりやすい回答有難うございます。
意味を理解できました。
省略している説明サイトも見かけたので意味が違うと思っていましたが、省略可能なわけなのですね。
No.2ベストアンサー
- 回答日時:
「document.openとcloseは、省略できるからですよー。
」というのは、確かにそうですが、それはブラウザーが拡大解釈しているから
ですよ。だからブラウザーによってはだめな場合があります。openはともかく、
特にdocument.close()をやらないと、正常に表示できない事はよくあります。
それから var付きで変数宣言しないと、グローバルスコープの変数として
扱われますから、関数内で省略する時は要注意ですよ!
例えば
function A(){x=10;}
function A(){x=1;}
function c(){y=x;return y;}
だとC()で1が返されます。
function A(){x=10;}
function A(){var x=1;}
function B(){var y=x;return y;}
だとC()で10が返されます。
省略OKというのはあくまでブラウザ側での挙動というわけですね。
省略せず記述していこうと思います。
関数内とグローバルの変数宣言の扱いもよくやるミスなので
為になりました。有難うございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- HTML・CSS cssが効かなくて困ってます 1 2023/01/01 23:57
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- HTML・CSS html/cssで要素が出てこなくて困ってます 1 2022/12/31 16:59
- HTML・CSS HTMLの条件によって表示方向が切り替わる実装のコードを教えて下さい。 (コードは下記リンクを参照) 1 2022/09/25 14:35
- その他(プログラミング・Web制作) Latexに関する質問です。 3 2023/05/23 10:18
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別窓を開いて、ページ下部中央...
-
ホームページに日付を自動更新...
-
テキストボックスを使い、必要...
-
javscript超初心者です。
-
functionから別のfunctionを実...
-
javascriptで自動計算フォーム...
-
日本語入力の禁止
-
URLの一部をコピーできるブック...
-
関数でy=g(x)のgとは何の略です...
-
google apps scriptの終了のさせ方
-
空の配列に2次元配列の追加
-
第3日曜日のみの日付を取得、...
-
HTML:Tableタグに対し、JavaScr...
-
React hooksが値を返して配列変...
-
javaScript textareaの一行あた...
-
Javascriptで引数の参照渡しか...
-
innerHTML実行後のイベント
-
ActiveXobjectが作成できない
-
リンクボタンからインラインフ...
-
CDの曲をケータイのSDに移す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.openでタイトル名の指定
-
ホームページに日付を自動更新...
-
○歳△ヶ月と×日を計算してくれる...
-
今日の月と日付の1週間後や3日...
-
文字列を点滅させたい
-
なぜ、ジャバスクリプトが表示...
-
iframe内に特定の文字列がある...
-
テキストボックスに入力された...
-
JS、document.write出力位置設定
-
自動ポップアップで画像を表示...
-
ジャバスクリプトで空白(スペー...
-
innerHTMLにて設定した情報を再...
-
document.open()の意味とは
-
document.writeで画面が消える
-
document.clear()の使い方について
-
ウェブ上にキーボードを作りた...
-
Java Scriptのメソッドについて
-
「分」単位で加算(減算)したい。
-
java カレンダーの日付指定で...
-
現在の日付から、1ヶ月前にす...
おすすめ情報