私は、編集可能なテーブルを作成してHTMLテーブルのエントリをダブルクリックするというprofの例に従おうとしています。だから、私のデータの方法は、次のようになります。編集可能なHTMLテーブルを作成する
function formatData(message) {
var str = "<table border=1>";
for (var i = 0; i < message.length; i++) {
str += "<tr>" + "<td class='editable'>" + message[i].id + "</td>" +
"<td>" + message[i].name + "</td>" +
"<td class='editable'>" + message[i].url + "</td>" +
"<td class='editable'>" + message[i].desc + "</td>" +
"<td>" + "<a href='#' onclick='deleteRequest(this); return false' id='" + message[i].id + "'>delete</a>" + "</td>" +
" + "</td>" + "</tr>";
}
str += "</table>";
return str;
}
私はその属性はクラスのあるタグに()関数の編集をバインドする「編集可能」。その後、私の編集機能は次のようになります。
function edit(elm) {
/* check to see if we are already editing */
if (elm.firstChild.tagName && elm.firstChild.tagName.toUpperCase() == "INPUT")
return;
/* save original content */
var orig = elm.innerHTML;
/* create edit field */
var input = document.createElement("input");
input.type = "text";
input.value = elm.innerHTML;
input.size = 20;
/* convert content to editable */
elm.innerHTML = '';
elm.appendChild(input);
/* position cursor and focus */
if (input.selectionStart)
input.selectionStart = input.selectionEnd = 0;
else
{
var range = input.createTextRange();
range.move("character", 0);
range.select();
}
input.focus();
/* set save trigger callback */
input.onblur = function(){save(elm, input,orig);};
}
私は情報を保存して更新する方法を混同しています。 Webサーバーを更新するには、id、url、およびdescが必要です。彼らはテーブルエントリをダブルクリックするので、その値の要素が私に与えられますが、IDは持っていません。私はそのid値を持つURLとDESCのためのウェブサーバを頼むことができるので、そのよう
"<td class='editable' id='" + message[i].id + "'>" + message[i].url + "</td>" +
"<td class='editable' id='" + message[i].id +"'>" + message[i].desc + "</td>" +
:私は私のformatDataの2行を変更しますか?それは今、2人が同じIDを持っているので悪い方法だと思われますが、私はAJAX、HTML、Javascriptに比較的新しいので、よく分かりません。ありがとう。
申し訳ありませんが、私はこれをスキミングしましたが、タグのinnerTextを引き出すことができます。セルのid属性に重複して格納する必要がある理由がわかりません。それでも、セルの代わりに行にid属性を付けるのはなぜですか? – user17753