この質問はすべての回答の中で最も単純かもしれませんが、わかりません。単純なcreateElementコマンドがJSで動作し、HTML DOMに要素を作成しないのはなぜですか?
私は基本的にシンプルなHTMLコードはJavaScriptを使用して
<p></p>
を複製したかったです。私の単純な書き込みHTMLで<p></p>
ならば、私は次のようにレンダリングの要素を取得します:
<html><head></head><body><p></p></body></html>
私はhtmlファイルを作成し、その中に以下のコードを書きました。
<script>
var para = document.createElement('p');
</script>
私はブラウザでこのファイルをレンダリングし、次の要素がレンダリングされていることを発見しました。
<html>
<head>
<script>
var para = document.createElement('p');
</script>
</head>
<body></body>
</html>
明らかに私の要素は作成されません。私の推測では、私は親を指定していないので、それを作成していませんでした。
<script>
var body = document.getElementsByTagName('body')[0];
var para = document.createElement('p');
body.appendChild(para);
</script>
それでも、私はそれが動作するように取得していない:ボディはデフォルトDOM要素ですので、私はそのように、私は次のコードを書いたボディDOM要素を取得すると思ったし、それの子としてパラを追加します。
<html>
<head>
<script>
var body = document.getElementsByTagName('body')[0];
var para = document.createElement('p');
body.appendChild(para);
</script>
</head>
<body>
</body>
</html>
と私は捕捉されない例外TypeErrorを得た::以下は、レンダリングされた変数の体は値undefined
を持っていることを私に言っている未定義の「は、appendChild」、プロパティを読み取ることができませんが、なぜ彼らの何body要素は応じませんJSに? DOM要素の基本とは何か、レンダリング時にどのように作成されるのか、これの背後にある基本を理解する必要があります。
:
はこれを試してみてください。スクリプトをあなたの体の最後に置いてみてください。または、DOMの準備が整ったときにのみスクリプトを実行するためのチェックを行います。 – rasmeister
ありがとうございました。 :)それは遅れて動作します。 –
これは間違いありませんが、長い時間をかけない限り、予測できません。読み込み時間は異なります。私は通常、jQueryの.ready()やdomReady(jQueryを使用していない場合)のようなマイクロライブラリを使用します。 – rasmeister