JS怎么设置可编辑表格的值

JavaScript016

JS怎么设置可编辑表格的值,第1张

*

JS实现可编辑的表格

*

用法:EditTables(tb1,tb2,tb2,......)

*

Create

by

Senty

at

2008-04-12

**/

//设置多个表格可编辑

function

EditTables()

{

for

(var

i

=

0

i

<

arguments.length

i++)

{

SetTableCanEdit(arguments[i])

}

}

//设置表格是可编辑的

function

SetTableCanEdit(table)

{

for

(var

i

=

1

i

<

table.rows.length

i++)

{

SetRowCanEdit(table.rows[i])

}

}

function

SetRowCanEdit(row)

{

for

(var

j

=

0

j

<

row.cells.length

j++)

{

//如果当前单元格指定了编辑类型,则表示允许编辑

var

editType

=

row.cells[j].getAttribute("EditType")

if

(!editType)

{

//如果当前单元格没有指定,则查看当前列是否指定

editType

=

row.parentNode.rows[0].cells[j].getAttribute("EditType")

}

if

(editType)

{

row.cells[j].onclick

=

function

()

{

EditCell(this)

}

}

}

}

//设置指定单元格可编辑

function

EditCell(element,

editType)

{

var

editType

=

element.getAttribute("EditType")

if

(!editType)

{

//如果当前单元格没有指定,则查看当前列是否指定

editType

=

element.parentNode.parentNode.rows[0].cells[element.cellIndex].getAttribute("EditType")

}

switch

(editType)

{

case

"TextBox":

CreateTextBox(element,

element.innerHTML)

break

case

"DropDownList":

CreateDropDownList(element)

break

default:

break

}

}

//为单元格创建可编辑输入框

function

CreateTextBox(element,

value)

{

//检查编辑状态,如果已经是编辑状态,跳过

var

editState

=

element.getAttribute("EditState")

if

(editState

!=

"true")

{

//创建文本框

var

textBox

=

document.createElement("INPUT")

textBox.type

=

"text"

textBox.className

=

"EditCell_TextBox"

//设置文本框当前值

if

(!value)

{

value

=

element.getAttribute("Value")

}

textBox.value

=

value

//设置文本框的失去焦点事件

textBox.onblur

=

function

()

{

CancelEditCell(this.parentNode,

this.value)

}

//向当前单元格添加文本框

ClearChild(element)

element.appendChild(textBox)

textBox.focus()

textBox.select()

//改变状态变量

element.setAttribute("EditState",

"true")

element.parentNode.parentNode.setAttribute("CurrentRow",

element.parentNode.rowIndex)

}

}

//为单元格创建选择框

function

CreateDropDownList(element,

value)

{

//检查编辑状态,如果已经是编辑状态,跳过

var

editState

=

element.getAttribute("EditState")

if

(editState

!=

"true")

{

//创建下接框

var

downList

=

document.createElement("Select")

downList.className

=

"EditCell_DropDownList"

//添加列表项

var

items

=

element.getAttribute("DataItems")

if

(!items)

{

items

=

element.parentNode.parentNode.rows[0].cells[element.cellIndex].getAttribute("DataItems")

}

if

(items)

{

items

=

eval("["

+

items

+

"]")

for

(var

i

=

0

i

<

items.length

i++)

{

var

oOption

=

document.createElement("OPTION")

oOption.text

=

items[i].text

oOption.value

=

items[i].value

downList.options.add(oOption)

}

}

//设置列表当前值

if

(!value)

{

value

=

element.getAttribute("Value")

}

downList.value

=

value

//设置创建下接框的失去焦点事件

downList.onblur

=

function

()

{

CancelEditCell(this.parentNode,

this.value,

this.options[this.selectedIndex].text)

}

//向当前单元格添加创建下接框

ClearChild(element)

element.appendChild(downList)

downList.focus()

//记录状态的改变

element.setAttribute("EditState",

"true")

element.parentNode.parentNode.setAttribute("LastEditRow",

element.parentNode.rowIndex)

}

}

使用Javascript可以实现work编辑功能,具体步骤如下:

1. 定义一个函数,用来处理用户提交的编辑工作。例如:function handleEditWork(){....}

2. 为每个work添加edit按钮,当用户点击edit按钮时,触发handleEditWork函数,并将work的id作为参数传给handleEditWork函数。

3. 在handleEditWork函数中,根据work的id获取work的信息,并将其显示在页面上,以供用户修改。

4. 提供一个“保存”按钮,当用户点击“保存”按钮时,触发一个函数,用来将新的work信息保存到数据库中。

5. 刷新页面,显示新的work信息。