テーブルを作成していて、選択したセルの背景色を変更したいとします。次に、別のセルを選択して(この新しいセルに同じ変更を適用すると)、最初の(選択されていない)セルで変更を元に戻します。これに最善のアプローチは何ですか?ここに私のコードは次のとおりです。選択中にを変更し、別のが選択された後で変更を元に戻すかどうかを確認します。
var table = '';
for (var r = 0; r < rows; r++) {
table += '<tr>';
for (var c = 0; c < cols; c++) {
if (c == 0) {
if (r == 0) {
var cellID = r.toString();
cellID += letterArray[c - 1];
table += '<td style="min-width:50px; height:25px;">' + '</td>';
}
else {
var cellID = r.toString();
cellID += letterArray[c - 1];
table += '<td style="min-width:50px; height:25px">' + r + '</td>';
}
}
else if (r == 0 && c > 0) {
var cellID = r.toString();
cellID += letterArray[c - 1];
table += '<td style="min-width:50px; height:25px">' + letterArray[c - 1] + '</td>';
}
else {
var cellID = r.toString();
cellID += letterArray[c - 1];
table += '<td id="' + cellID + '" style="min-width:50px; height:25px;" onclick="selectCell(this)">' + '</td>';
}
}
table += '</tr>';
}
文書にテーブルを書き込む:
document.write('<table id="table" border=1>' + table + '</table>');
selectCell機能:私は私の問題が発生した場所
function selectCell(x) {
alert("Row = " + x.parentNode.rowIndex + " Col = " + String.fromCharCode((x.cellIndex - 1) + 65));
x.style.backgroundColor = 'purple';
}
です。最初のセルをクリックすると、選択したセルの情報が表示され、背景色が変更されます。次に、別のセルを選択すると、新しいセル行と列情報が表示され、色が変更されます。
以前に選択したセルの色の変化を元に戻す最善の方法は何ですか?
あなたの時間とエネルギーをありがとう!
'document.write'を使用しないことであろう最善の方法。しかし、あなたのケースでは、1)_all_セルの強調表示を解除し、2)_selected_セルをハイライト表示しているときに動作します。 –
私の質問は答えられましたが、私はそれを感謝するあなたの時間もありがとうございました。私はdocument.writeを使用してはならない理由についてあなたが精緻化することができますか? – grcHIDDEN
'document.write()'はHTMLページ全体を上書きします。本質的には一度しか使用できません。実際には、テーブル全体を構築してから 'document.body.appendChild(table)'を使うべきです。 CSSの 'classList' add/removeと同様に、addChildとremoveChildを使ってページに要素を追加したり削除することができます。 – skyline3000