我試圖按照教授的示例創建一個可編輯的表,雙擊HTML表中的一個條目。因此,我的數據方法如下所示:創建一個可編輯的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;
}
我將一個函數edit()綁定到其屬性類爲'editable'的標籤。然後我的編輯功能:
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來更新Web服務器。由於他們雙擊表格條目,只是給了我這個值的元素,但我沒有id。我將formatData中的兩行更改爲:
"<td class='editable' id='" + message[i].id + "'>" + message[i].url + "</td>" +
"<td class='editable' id='" + message[i].id +"'>" + message[i].desc + "</td>" +
這樣,我可以通過該id值詢問web服務器的url和desc嗎?這似乎是一個不好的方法來做到這一點,因爲現在兩個有相同的ID,但我不確定,因爲我相對較新的AJAX,HTML,Javascript。謝謝。
對不起,我那種通過這個脫脂,但你可以拉出標籤的的innerText,不知道爲什麼你需要將其存儲在重複對細胞的id屬性。即便如此,爲什麼不在行而不是單元格上的id屬性呢? – user17753 2012-03-02 21:09:47