※ ChatGPTを利用し、要約された質問です(原文:配列が勝手にnullになってしまいます。)
配列が勝手にnullになる問題
このQ&Aのポイント
javascript初級者の質問です。配列が勝手にnullになってしまう問題について解決策を教えてください。
現在、色を変化させるプログラムを作成していますが、うまく動作しません。具体的なエラーメッセージやコードの状況を共有し、解決方法を教えてください。
プログラムを動作させるとダイアログボックスが表示されますが、その後にnullというメッセージが表示されエラーが発生します。詳細な情報を共有し、問題解決の手助けをお願いします。
javascript初級者です。よろしくお願いします。
現在要素の色を判別して、白でなかったら徐々に色を変化させ白に近づけるプログラムを作成しています。
その中で「色を変化させる」関数を作成したのですが、どうしてもうまくいきません。
関数は以下のようなものです。
function changeColor(color){
if(color!="rgb(255, 255, 255)"){
var oldcolor=color.match(/([0-9]{3}),.([0-9]{3}),.([0-9]{3})/);
var newcolor="rgb("+(Number(oldcolor[1])+5)+","+oldcolor[2]+","+oldcolor[3]+")";
alert(color);
alert(newcolor);
return(newcolor);
}
return(color);
}
alertはデバック用に書き足してあります。
さて、このプログラムを動作させると
まず「rgb(125, 255, 255)」というダイアログボックスが表示され
次に「rgb(130, 255, 255)」というダイアログボックスが表示されます。
ここまでは期待通りの動作です。
しかし、このダイアログボックスを閉じると「null」と書かれたダイアログボックスが開き、さらにそれを閉じるとfirebug上で「oldcolor is null」というエラーになってしまいます。
alert(newcolor);で正しい結果が返ってきているのだからnullって事は無いはずなのですが、とにかくうまくいきません。
「null」のダイアログボックスもナゾですし、分からないことだらけです。
どうかお助けください。よろしくお願いします。
お礼
早い回答ありがとうございます。 なるほど、「null」のダイアログボックスは2回目の関数呼び出し時でしたか。勝手にnullになってしまうなんてとんだ勘違いでしたねww。 その点を踏まえてプログラムを見直した結果正常に動作させることができました。 ただし、次回呼び出し時に「null」が返ってくる理由としては、2回目は別の要素から引数をとっていたのですが、その要素のstyleをhtmlタグではなく、スタイルシートで指定していたことが原因のようでした。 タグ内にstyle="backgroundColor=○○;"と書き足すことによって正しく動作しました。 とは言え教えて頂いた点には非常に助けられました。 ありがとうございました。