JavaScriptを使用して作成した要素の色を変更しようとしています。この要素の情報は、データベース内のデータから読み込まれます。javascriptを使用して作成した要素の色を変更するには
var done = orders[i][2];
var id = orders[i][0];
id_and_name = JSON.stringify(id_and_name);
content = content + "<div onClick='loadOrder("+id_and_name+")' class='btn btn-lg btn-info'
id= '"+id+"'><span class='glyphicon glyphicon-shopping-cart'></span>
ID: "+orders[i][0]+"</br>Name: " + orders[i][1]+"</div>";
if (done == 0){
alert("order not done");
document.getElementById(id).style.color = "red";
alert(id);
}else{
alert("order done");
document.getElementById(id).style.color = "green";
alert(id);
}
document.getElementById("main_content").innerHTML = content;
コードは、私がのdocument.getElementById行を削除すると、構文エラーなしで動作し、適切な枝を介して実行されます。これらの行を含めると、構文エラーが発生します。VM882:125 Uncaught TypeError:ヌル(...)のプロパティ 'style'を読み取れません。
この方法でjavascriptを使用して作成した要素の色を変更することはできません。なぜそうでないのか、そしてどのような方法を使用すべきですか?
私はidの値がalert(id)であることを確認しましたが、それでも問題ありません。両方とも、たとえば「43」および「44」の文字列である。私はdocument.getElementById(id).style.color = "red"を置き換えることも試みました。 document.getElementById( "43")を使用します。style.color = "red";私は同じエラーが発生します。行を削除すると、要素は正しいIDで作成されますが、もちろん色を変更することはできません。
というエラーが示しています'document.getElementById(id)'は何も返していない(nullです)。だから、 'id'変数と同じidを持つ要素があることを再確認する必要があります。 –
また、追加するHTML文字列に要素のCSSを含むhtmlスタイル属性の文字列を追加することもできます。 – seahorsepip
要素を作成した後に、要素を作成するときに色を付けるために必要なすべての情報を既に持っているときに、要素を色付けしているのはなぜですか?あなたは何の理由もせずにフープを飛び越えています。要素を作成するとき(つまりクラスを使用するとき)に適切なスタイルを追加するだけです。しかし問題はあなたが実際にどこにでも 'content'をドキュメントに追加していないので新しい' div'は実際には存在しません – Tibrogargan