Javascript を使用して HTML テーブルを生成し、定期的に自動的に更新する必要があります (テーブルの内容を置き換えます)。私は組み込みアプリケーションを書いているので、JQuery の余地がありません。
1 - HTML でテーブルを作成し、JavaScript .innerHTML を使用してテーブルの内容を置き換えることができます。ただし、ユーザーは好みに応じてテーブル サイズ (行数) を設定したいと考えています。
2 - 古い行を削除し、更新された内容とともに新しい行をテーブルに挿入するコードを作成しました。これにより、FireFox と IE で不快なパルス (アコーディオン) 表示が発生しました。
したがって、ユーザーが必要とする行数に応じて JavaScript でテーブルを作成し、各行の内容を HttpRequest を使用してサーバーから取得した最新のデータに置き換える必要があると考えています。
ファイル: namelog.js
var TableLen; //Number of rows in table
var TablePos; //Pos for first row in data table
var TableAuto; //Auto/manual refresh flag
var IntervalId;
function onLoad() {
//Table length will be taken from parameter in HTML page
TableLen = 10;
TableAuto = false;
buildTable();
first();
}
function first() {
//Fill table starting at data position #1
TablePos = 1;
fillTable();
}
function next() {
//Fill table from last used data position
fillTable();
}
function auto() {
//Periodically fill table starting at data position #1
first();
}
function buildTable() {
var HtmlTable;
HtmlTable = $("iTable");
for (var RowPos = 0; RowPos < TableLen; RowPos++) {
//Create row and assign CSS classname for alternate colours
HtmlRow = HtmlTable.insertRow(RowPos);
HtmlRow.id = "iRow" + RowPos.toString();
HtmlRow.insertCell(0).innerHTML = " ";
HtmlRow.insertCell(1).innerHTML = "-";
HtmlRow.insertCell(2).innerHTML = "-";
HtmlRow.insertCell(3).innerHTML = "-";
HtmlRow.insertCell(4).innerHTML = " ";
HtmlRow.insertCell(5).innerHTML = "-";
HtmlRow.insertCell(6).innerHTML = " ";
if (RowPos % 2) {
HtmlRow.className = "cRowE";
} else {
HtmlRow.className = "cRowO";
}
}
}
function fillTable() {
var HtmlRow;
//Dynamic data will be pulled from server on embedded device but
//for now populate table with static data.
for (var RowPos = 0; RowPos < TableLen; RowPos++) {
HtmlRow = $("iRow" + RowPos.toString());
HtmlRow.childNodes[0].innerHTML = TablePos.toString();
HtmlRow.childNodes[1].innerHTML = "Mary";
HtmlRow.childNodes[2].innerHTML = "Steenburgen";
HtmlRow.childNodes[3].innerHTML = "59";
TablePos++;
}
}
function $(id) {
return document.getElementById(id);
}
function $create(element) {
return document.createElement(element);
}
function showButton(Id, Flag) {
if (Flag) {
$(Id).style.visibility = "visible";
} else {
$(Id).style.visibility = "hidden";
}
}
問題は、このアプローチでは、セルにデータを入力した後に .onLoad() メソッドを呼び出しているように見えるため、テーブルの内容が上書きされることです。明らかに私は何かばかげたことをしています-正しいアプローチがどうあるべきか誰か教えてもらえますか?
ありがとうございます。