ブラウザが 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 はこの解釈を使用し、他のブラウザーは下位互換性を損なわないようにこれに従いました。