-1

を使用するときにブラウザで起こっているプロセスは何ですかdocument.getElementsByTagName("body")[0]。以下のコードを実行します。<script type="javascript" src=""myJs.js"></script>以下のどこかで使用する場合の流れの違いは何ですか<body> or <head>

function addJavascript(jsname,pos) {
var th = document.getElementsByTagName(pos)[0];
var s = document.createElement('script');
s.setAttribute('type','text/javascript');
s.setAttribute('src',jsname);
th.appendChild(s);
}
addJavascript("myJs.js","body");

を使用するとどうなるかも知りたいですdocument.getElementsByTagName("head")[0]

4

3 に答える 3

2
document.getElementsByTagName("tag here")[0]

これは、指定されたタグを持つhtmlの最初の要素を見つけます

body タグと head タグの場合は、一度しか定義されていないため特別なことはしていません。

于 2013-10-16T10:00:10.357 に答える
1

[0]ここで実際に何を尋ねられたのかわからないので、その部分について混乱していると思います。

さて、document.getElementsByTagNameマークアップ内の不明な数の要素を照会します。配列のような構造HTMLCollectionであるを返します。そのため、そのリスト内の特定の要素を括弧で指定する必要があります。

<body>and<head>要素は、有効な HTML ドキュメント内で 1 回しか使用できないため、少し混乱するかもしれません。これらのノードを取得するより良い方法は、参照を介して直接行うことです。

var head = document.head,
    body = document.body;

保存側になるには、それをフォールバックと組み合わせれば問題ありません

head = document.head || document.getElementsByTagName("head")[0];
于 2013-10-16T10:03:09.253 に答える
0

質問に対するあなたのコメントから:

私の意図は、 document.getElementsByTagName("body")[0] が何をするかを知ることです。

document.getElementsByTagNameそのタグ ( 、、、、など) を持つ、呼び出した時点でドキュメントに存在する要素を検索します。つまり、タグ nameで呼び出しているため、ドキュメント内のすべての要素が検索されます。あなたがそれを呼び出すとき。bodyheadpadiv"body"body

[0]次に、結果のリストから最初のエントリを取得しようとします。リストが空の場合は、 が返されundefinedます。

そのため、ドキュメント内document.getElementsByTagName("body")[0]の最初の (そしておそらく唯一の)要素を取得するか、(まだ) 要素がない場合に取得します。bodyundefined

または以下<script type="javascript" src=""myJs.js"></script>のどこかで使用する場合の流れの違いは何ですか。<body><head>

にそれがあり、タグ<head>を探して実行すると、空のノード リストが返されます ( は の前にある必要があるため) 。bodydocument.getElementsByTagName('body')head body[0]undefinedappendChild


scriptスクリプトからページに要素を確実に追加したいだけの場合、通常は次を使用します。

var parent = document.getElementsByTagName('script')[0].parentNode;
// ...create your new script element
parent.appendChild(yourScript);

...スクリプトが実行されている場合 (そして、それを延期せず、それを含むスクリプト要素を削除していない場合)、ページのどこかに少なくとも 1 つのscript要素があることがわかります。

于 2013-10-16T10:01:29.590 に答える