- ベストアンサー
なぜbgColorは#dededeになってしまったのでしょうか?
- 背景色が黒→白に変わるというスクリプトで、背景色が一定の値で固定されてしまう現象について質問しています。
- スクリプト中にあるif文の条件式を削除した場合に、背景色が中途半端な#dededeという色で固定されてしまう問題が発生しました。
- この現象の原因や解決策について、質問者が理解できないため、教授を求めています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
提示されているソースを少し変えてみました。 <html> <head> <script type="text/javascript"> <!-- i=0; function FUNC(){ color=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"]; document.bgColor="#"+color[i]+color[i]+color[i]+color[i]+color[i]+color[i]; status=document.bgColor+" "+color[i]+" "+color[i]+color[i]+color[i]+color[i]+color[i]+color[i]; i++; //インクリメントはこの位置で if(i>=color.length+1){return;} //配列を一つ超えた所まで setTimeout("FUNC()",50); } //--> </script> </head> <body onload="FUNC()"> </body> </html> これでわかるのは、予期しない値(undefinedの羅列)に#がつくと、#dededeになるということです。 試しに、他の予期しない場合(以下)で実行してみると、 <html> <head> <script type="text/javascript"> <!-- function FUNC(){ document.bgColor="#"+parseInt(""); //数字以外の文字列を数値にしようとしている status=document.bgColor+":"+parseInt(""); } //--> </script> </head> <body onload="FUNC()"> </body> </html> #000a00になります。 結局、定義していない配列の要素から値をとろうとすると、スクリプトエラーは出ず、undefinedという実際は何かわからないデータが返され、その何かわからないものによって色がつけられているというところでしょうか。 document.bgColorはどんな値をいれてもスクリプトエラーにはならなくて、なんらかの値を勝手にセットするみたいですね。
お礼
bgColorはどんな値を入れてもスクリプトエラーにならないということで、 いろいろ値を代入して試してみた結果、 なぜ#dededeになったのかという仕組みが7割方理解できました。 残り3割は理解できそうにないので深追いは避けておきます! どうもありがとうございました<(_ _)>