0

このコードをブラウザで実行すると、色が入力されていない場合、「緑」(未定義) がレンダリングされます。

ランダム/ガベージ値は黒の背景につながります...
...選択しないか透明にすると白(null)に なります

<HTML>
<HEAD>
<TITLE>Document Object Demo</TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE=Javascript>
var sAnswer = window.prompt("Please enter your favourite color : choose from the following Yellow, Green, Red, Blue, Pink, Orange, Black, Gray")
document.bgColor = sAnswer
document. write ("<H1>Welcome " + sAnswer + ":-)!!</H1><HR>We are very happy to demonstrate the usage of <I> document. write</I>. Do remember to view the source!<P>")
</SCRIPT>
</BODY>
</HTML>

私はIE9を使用しています...!

なぜこうなった?

4

2 に答える 2

2

ブラウザが bgColor を設定したものから何かを解析しようとするため、この問題が発生しています...

あなたの Javascript はかなり疑わしいものであり、これを行う理由は思いつきませんが、コードはおそらく次のようになるはずです。

(function () {
    // Prompts the user to give an answer, this prevents further code execution
    var sAnswer = window.prompt("Please enter your favourite color : choose from the following Yellow, Green, Red, Blue, Pink, Orange, Black, Gray");

    // Takes care of all falsy valuyes, 0, null, undefined, false
    // Ideally some more validation on the input should be done
    if(sAnswer) {
        document.body.style.backgroundColor = sAnswer;
        document.write ("<h1>Welcome " + sAnswer + ":-)!!</h1><hr><p>We are very happy to demonstrate the usage of <i> document. write</i>. Do remember to view the source!</p>");
    } else {
        document.write ("<p>You did not fill in a valid answer! Refresh.</p>");
    }
}());

または、有効な回答が得られるまで質問を続けます.. (かなり邪悪なイモ)

(function () {
    var sAnswer;

    do {
        sAnswer = window.prompt("Please enter your favourite color : choose from the following Yellow, Green, Red, Blue, Pink, Orange, Black, Gray")
    } while ( !sAnswer );

    document.body.style.backgroundColor = sAnswer;
    document.write ("<h1>Welcome " + sAnswer + ":-)!!</h1><hr><p>We are very happy to demonstrate the usage of <i> document. write</i>. Do remember to view the source!</p>");

}());

コードはテストされていませんが、動作するはずだとかなり確信しています:p

編集、どうやって緑色になるの?

つまり、undefinedはプロパティの設定に使用できる文字列に型キャストされbgColor、次に解析されて色として解釈され、無効な 16 進文字が にカウントされ0ます。詳細な説明については、こちらをお読みください

Internet Explorer はこの解釈を使用し、他のブラウザーは下位互換性を損なわないようにこれに従いました。

于 2012-05-28T08:51:24.093 に答える
1

デフォルトの色などはありません。ブラウザーごとに異なるデフォルトの CSS スタイルがあります (ブラウザーのデフォルトの CSS スタイルシートを参照してください)。

あなたのコードでは、ほとんどの場合、ユーザーから提供された回答を確認して、 を設定する意味があるかどうかを確認する必要がありますbgColor

さらに、このプロパティは非推奨です: https://developer.mozilla.org/en/DOM/document.bgColor

おそらく次の方法で背景を設定する必要がありますdocument.body.style.backgroundColor

于 2012-05-28T08:38:50.220 に答える