js制作动态创建table行与修改等编辑表单功能特效

<script type="text/javascript">

//Create TR

var nName = new Array("Tony","Mika","Neo","Oi","Kim","Park","Mr Lee","Tasky","Saco","Novel");

var nSex = new Array("男性","女性","保密");

var i = 1;

function CreateTB(){

    var oTB = document.getElementById("TB");

    var oTR = oTB.insertRow(oTB.rows.length);

    var oTD1 = oTR.insertCell(0);

    oTD1.innerHTML = "<input type=‘checkbox‘ name=‘ck‘>";

    var oTD2 = oTR.insertCell(1);

    oTD2.innerHTML = "<div>" + nName[parseInt(Math.random()*10)] + "</div><center><input type=‘text‘ style=‘display:none; width:99%; height:22px; text-align:center;‘></center>";

    var oTD3 = oTR.insertCell(2);

    oTD3.innerHTML = "<div>" + parseInt(Math.random()*50+15) + "</div><center><select name=‘age‘ class=‘select‘ style=‘display:none;‘></select></center>";

    var oTD4 = oTR.insertCell(3);

    oTD4.innerHTML = "<div>" + nSex[parseInt(Math.random()*3)] + "</div><center><select name=‘sex‘ class=‘select‘ style=‘display:none;‘></select></center>";

    var oTD5 = oTR.insertCell(4);

    oTD5.innerHTML = "<input type=‘button‘ value=‘修改‘ onclick=\"edit(this,‘show‘)\"><input type=‘button‘ value=‘删除‘ onclick=‘del(this)‘>";

i++;

}

//EDIT TR

function edit(o,otype){

    var oTR=o.parentNode.parentNode;

    var oDiv1=oTR.cells[1].getElementsByTagName("div");

    var oDiv2=oTR.cells[2].getElementsByTagName("div");

    var oDiv3=oTR.cells[3].getElementsByTagName("div");

    var oInpt1=oTR.cells[1].getElementsByTagName("input");

    var oselect2=oTR.cells[2].getElementsByTagName("select");

    var oselect3=oTR.cells[3].getElementsByTagName("select");

    if (otype =="show"){

        o.value="确认";

        o.setAttribute("onclick","edit(this,‘hide‘)");

        //名字修改前

        oInpt1[0].value = oDiv1[0].childNodes[0].nodeValue;

        oInpt1[0].style.display = "block";

        oDiv1[0].style.display = "none";

        //年龄修改前

        oDiv2[0].style.display = "none";

        var iSage = parseInt(oDiv2[0].childNodes[0].nodeValue);

        oselect2[0].style.display = "block";

        if (oselect2[0].length == 0){

            for (var i=0; i<50; i++){

                oselect2[0].options.add(new Option(i+15,i+15)); 

            }

            oselect2[0].options[iSage-15].selected = true;

        }

        //性别修改前

        oDiv3[0].style.display = "none";

        oselect3[0].style.display = "block";

        if (oselect3[0].length == 0){

            for (var i=0; i<nSex.length; i++){

                oselect3[0].add(new Option(nSex[i],i));

            }

            switch (oDiv3[0].childNodes[0].nodeValue){

            case ‘男性‘:

            var iSno = 0;

            break;

            case ‘女性‘:

            var iSno = 1;

            break;

            case ‘保密‘:

            var iSno = 2;

            break;

            }

            oselect3[0].options[iSno].selected = true;

        }

    }else if (otype =="hide"){

        o.value="修改";

        o.setAttribute("onclick","edit(this,‘show‘)");

        //名字修改后

        oDiv1[0].childNodes[0].nodeValue = oInpt1[0].value;

        oDiv1[0].style.display = "block";

        oInpt1[0].style.display = "none";

        //年龄修改后

        oDiv2[0].childNodes[0].nodeValue = oselect2[0].value;

        oDiv2[0].style.display = "block";

        oselect2[0].style.display = "none";

        //性别修改后

        oDiv3[0].childNodes[0].nodeValue = nSex[oselect3[0].value];

        oDiv3[0].style.display = "block";

        oselect3[0].style.display = "none";

    }

}

//Delete TR

function del(o){

    var oTB = document.getElementById("TB");

    var oInpt = oTB.getElementsByTagName("input");

    if (o == ‘chk‘)

    {

        for (var i=1; i<oInpt.length ; i++)

        {

            if (oInpt[i].type == ‘checkbox‘ && oInpt[i].checked)

            {

                var oRow = oInpt[i].parentNode.parentNode.sectionRowIndex;

                oTB.deleteRow(oRow);

                i--;

            }

        }

    }else{

        var oDel = o.parentNode.parentNode.sectionRowIndex;

        oTB.deleteRow(oDel);

    }

}

//Check All

function chk(type,o){

    var oInpt = document.getElementsByTagName("input");

    for (var i=0; i<oInpt.length; i++){

        if (oInpt[i].type == "checkbox"){

            oInpt[i].checked = o.checked;

        }

    }

}

//Check Fan

function chkFun(){

    var oTB = document.getElementById("TB");

    var oInpt = oTB.getElementsByTagName("input");

    for (var i=1; i<oInpt.length; i++){

        if (oInpt[i].type == "checkbox"){

            if (oInpt[i].checked)

            {

                oInpt[i].checked = false;

            }else{

                oInpt[i].checked = true;

            }

        }

    }

}

</script>

下载源码

时间: 2024-08-04 11:48:04

js制作动态创建table行与修改等编辑表单功能特效的相关文章

js基础例子动态创建table实例

<style> table{ width:500px; font-weight: bold; border: 1px solid #000; border-collapse:collapse; font-size:20px; text-align:center; margin: 0 auto; } td{ border: 1px solid #000000; } </style> <script> window.onload=function () { //创建一个数据

oaf 动态创建table vo (转)

原文地址:如何动态创建table 需求: 因为系统中有几千个QA plan 但是不能手动创建几千个 质量收集页面所有需要根据 不同的plan 动态创建对应的 质量收集页面. 但是创建tabel 都要绑定一个 具体的vo  而我需要一个动态的如果用 select ... from dual 的话 字段的个数如何动态? 感谢答主sumury 方案0.1版本 //用以下的代码可以实现,但是有一点不足,就是当数据量比较多的时候,无法按照指定的行数进行分页显示. //先在页面上创建一个advancedTa

asp.net实现动态添加table行

asp.net动态的生成,删除table的行,主要是在后台动态创建单元行,单元表格,效果图: 2.代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="releaseAffair.aspx.cs" Inherits="affair_releaseAffair" %> <!DOCTYPE html> <!--发布事务页面:名称Affa

js实现动态操作table

 本章案例为通过js,动态操作table,实现在单页面进行增删改查的操作. 简要案例如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%&

IE下使用excanvas.js之后动态创建的canvas不支持getContext的解决方法(转)

IE下使用excanvas.js之后动态创建的canvas不支持getContext的解决方法(转) IE下使用excanvas.js之后,动态创建的canvas不支持getContext的解决方法 引入excanvas.js以后,在ie下,文档中的canvas就可以用了,但是如果是通过createElement方法创建的就不行了 var canvas=document.createElement(”canvas”); if(canvas.getContext){ alert(”support

Mysql基础知识:创建、查看、修改和删除表

Mysql 创建.查看.修改和删除表 1. 创建表 创建表的语法形式: CREATE TABLE 表名 ( 属性名 数据类型 约束条件, 属性名 数据类型 约束条件, . . . ) ENGINE=存储引擎名 DEFAULT CHARSET=字符编码名; 约束条件表: 注意: 1)可以添加多个主键.形式: 在表名后的括号内添加:PRIMARY KEY(字段名1, 字段名2, ...): 2)存储引擎和字符编码可以省略不写: 3)设置表的字段名为默认值时,需要在 “DEFULT” 关键字后添加 “

JS动态创建table

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> *{ margin: 0; padding: 0; } table{ width: 500px; border-color: chartreuse; border-collapse: collapse; } ta

使用createElement函数来动态创建table的问题

在我们使用ajax时,最重要的就是success函数中对于页面的动态生成,现在的情景就是使用ajax动态生成table或者其他列表格式来进行查询的输出.我去网上查过一些资料,关于动态生成table的例子,大多是通过拼写html文本来实现,这个缺点就是如果数据量很大,js的性能不高.我参考了一些资料后,决定使用动态生成html元素来进行显示.核心函数就是document.createElement(string tagName)来生成table,thead,tbody,tr,th,td等元素.代码

JS动态引入js,CSS——动态创建script/link/style标签

一.动态创建link方式 我们可以使用link的方式.如下代码所示. function addCssByLink(url){ var doc=document; var link=doc.createElement("link"); link.setAttribute("rel", "stylesheet"); link.setAttribute("type", "text/css"); link.setA