6

私はJavaScriptの実験をいじって、その感触をつかんでいて、すでに問題にぶつかっています。これが私のhtmlコードです:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<script type="text/javascript" src="testing.js"></script>
</head>
<body onload="writeLine()">
</body>
</html>

JavaScriptのtesting.jsは次のとおりです。

function writeLine()
{
    document.write("Hello World!")
}

スタイルシートstyles.cssは次のとおりです。

html, body {
    background-color: red;
}

非常に単純な例ですが、bodyタグでon-loadを使用して、厄介な例を選択した可能性があります。したがって、上記のコードは関数をロードして実行しますが、ヘッドのスクリプトタグを削除しない限り、スタイルシートは何もしません。スクリプトタグを他の場所に配置しようとしましたが、何も機能しません。JavaScriptファイルに適切にリンクする方法をオンラインで調べましたが、明確な解決策が見つかりませんでした。誰かが私のエラーを指摘できますか?

以前にJavaScriptを使用したことがありますが、使用する前に最初から明確に理解しておく必要があります。

4

3 に答える 3

3

document.writeドキュメントが閉じられた後(起動時onload)は、既存のドキュメント(スタイルシートへのリンクを含む)を破棄せずに使用することはできません。

代わりに、 W3CJavaScriptコアスキルの第8章と第9章で説明されているDOM操作を使用してください。

于 2012-05-28T13:40:24.200 に答える
2

あなたの問題はdocument.write()、間違った瞬間に呼び出されたことです*。このメソッドは、ページがまだロードされている間に機能するように意図されたように、ページの現在の場所に指定されたテキストを印刷します。ページ全体が読み込まれたときに呼び出しているため、予期しない結果になります(未定義ですか?)

代わりに、ツリーを直接操作する必要があります。

function writeLine() {
    var text = document.createTextNode("Hello World!");
    document.body.appendChild(text);
}

実際、Operaブラウザでは、数ミリ秒の間赤い背景が表示され、その後白に戻ります。コメントアウトしてみてくださいdocument.write()-背景は期待どおりです。<script>さらに、の最後にタグを含める必要がありますbodyが、これでは問題は解決しません。

*正直なところ、電話するのに良い瞬間はありませんdocument.write()、それを避けてください

于 2012-05-28T13:41:46.920 に答える
2

document.write特定の例では、コンテンツがレンダリングされた後にコマンドが実行され、既存のコンテンツが上書きされるため、スクリプトタグがどこに追加されてもかまいません。

コンテンツを上書きする前にアラートを追加すると、ページがで上書きされる前にページが赤く表示されますHello World

于 2012-05-28T13:42:02.047 に答える