js table 操作-----实现table的插入、修改、删除

简介:
上边是一个表,下边是一些录入控件text ,select
实现了:插入 ,删除,修改,读取,验证类型唯一性(每种类型只能输入一个记录)
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
< HTML >
< HEAD >
< TITLE >  New Document  </ TITLE >
< META  NAME ="Generator"  CONTENT ="EditPlus" >
< META  NAME ="Author"  CONTENT ="" >
< META  NAME ="Keywords"  CONTENT ="" >
< META  NAME ="Description"  CONTENT ="" >
</ HEAD >
< script >
    
var flg=false;
    
var selectedColor = "#99CCCC";
    
var initColor = "#ffff99";
    
var selectedRowIndex = "";
    
var editObj;
    
function add(){
        
var cell;
        
var textNode;
        
// add head
        var type = document.getElementsByName("type")[0];
        head 
= type.options[type.selectedIndex].text;
        
//check exist
        var hiddenHeads = document.getElementsByName("hiddenHead");
        
for(i=0;i<hiddenHeads.length;i++){
            
if(hiddenHeads[i].value == type.value){
                alert(
"这个类型的记录已经存在");
                
return ;
            }

        }

        
//add row
        tbl = document.getElementById("paramTbl");
        rowsLen 
= tbl.rows.length;
        row 
= tbl.insertRow(rowsLen);        
        
        
//create head tag
        textNode = document.createTextNode(head);        
        cell 
= row.insertCell(0)
        cell.setAttribute(
"hight","22");
        cell.appendChild(textNode);        
        row.appendChild(cell);        
        
//add param tag
        for(i=1;i<4;i++){            
            paramValue 
= document.getElementsByName("param"+i)[0].value;
            textNode 
= document.createTextNode(paramValue);            
            cell 
= row.insertCell(i)
            cell.setAttribute(
"hight","22");
            cell.appendChild(textNode);
            row.appendChild(cell);             
        }

        
//add head value
        hiddenHead = document.createElement("<input type='hidden' name='hiddenHead' value='"+type.value+"'/>");        
        cell 
= row.insertCell(4)        
        cell.setAttribute(
"hight","22");
        cell.appendChild(hiddenHead);
        row.appendChild(cell);
        
//add param value
        for(i=5;i<8;i++){
            paramValue 
= document.getElementsByName("param"+(i-4))[0].value;
            hidden 
= document.createElement("<input type='hidden' name='hiddenParam"+(i-4)+"' value='"+paramValue+"'/>");
            cell 
= row.insertCell(i)
            cell.style.display
='none';
            cell.appendChild(hidden);
            row.appendChild(cell);   
        }


        row.onclick
=function(){rowClick(this);};
        row.bgColor 
= initColor;
        init();
    }

    
function edit(){
        tbl 
= document.getElementById("paramTbl");
        
if(selectedRowIndex==""){
            alert(
"please select a row");
            
return ;
        }

        
for(i=1;i<4;i++){
            paramObj 
= document.getElementsByName("param"+i)[0];
            hiddenObj 
= document.getElementsByName("hiddenParam"+i)[selectedRowIndex-1];
            hiddenObj.value 
= paramObj.value;
            editObj.cells[i].innerText
=paramObj.value;
        }

        init();
    }

    
function del(){
        tbl 
= document.getElementById("paramTbl");
        tbl.deleteRow(selectedRowIndex);
        selectedRowIndex 
= "";
        init();

    }

    
function rowClick(obj){
        tbl 
= document.getElementById("paramTbl");
        
if(selectedRowIndex != ""){
            tbl.rows[selectedRowIndex].bgColor 
= initColor;
        }

        selectedRowIndex 
= obj.rowIndex;
        obj.bgColor 
= selectedColor;
        
//reset select 
        var type = document.getElementsByName("type")[0];
        
var hiddenHead = document.getElementsByName("hiddenHead")[selectedRowIndex-1];        
        
var opts = type.options;
        
if(flg){
        alert(selectedRowIndex
-1);
        alert(hiddenHead);
        alert(hiddenHead.value);
        }

        
for(i=0;i<opts.length;i++){    
            
if(opts[i].value == hiddenHead.value ){
                opts[i].selected 
= true;
            }

        }

        
//copy param value
        for(i=1;i<4;i++){
            paramObj 
= document.getElementsByName("param"+i)[0];
            hiddenObj 
= document.getElementsByName("hiddenParam"+i)[selectedRowIndex-1];            
            paramObj.value 
= hiddenObj.value;
            
//alert(hiddenObj.value);
        }

        editObj
=obj;
    }

    
function init(){
        
for(i=1;i<4;i++){            
            param 
= document.getElementsByName("param"+i)[0];
            param.value
="";
        }

        
var type = document.getElementsByName("type")[0];
        type.options[
0].selected=true;
    }

    
function test(){
        
        hiddenObjs 
= document.getElementsByName("hiddenParam1")
        
for(i=0;i<hiddenObjs.length;i++){
            alert(hiddenObjs[i].value);
        }

        
var hiddenHeads = document.getElementsByName("hiddenHead");    
        
for(i=0;i<hiddenHeads.length;i++){
            alert(hiddenHeads[i].value);
        }

    }

    
function test2(){
        
if(flg){
            flg
=false;
        }
else{
            flg
=true;
        }

    }

    
function reset(){
        tbl 
= document.getElementById("paramTbl");
        
if(selectedRowIndex!=""){
            tbl.rows[selectedRowIndex].bgColor 
= initColor;
            selectedRowIndex
="";
        }

        
for(i=1;i<4;i++){            
            param 
= document.getElementsByName("param"+i)[0];
            param.value
="";
        }

    }


</ script >
< BODY >
    
< div  style ="height:132px; width:100%; overflow-x:auto; overflow-y:auto; background-color:#ffff99;"   >
    
< table  id ="paramTbl"  width ="100%" >
        
< tr >
            
< td > 类型 </ td >
            
< td > 参数1 </ td >
            
< td > 参数二 </ td >
            
< td > 参数三 </ td >
        
</ tr >
    
</ table >
    
</ div >
    
< table >
        
< tr >
            
< td >
                
< select  name ="type"  onchange ="reset()" >
                    
< option  value ="typeA" > 类型A </ option >
                    
< option  value ="typeB" > 类型B </ option >
                
</ select >
            
</ td >
            
< td >
                
< input  type ="text"  name ="param1" />
            
</ td >
            
< td >
                
< input  type ="text"  name ="param2" />
            
</ td >
            
< td >
                
< input  type ="text"  name ="param3" />
            
</ td >
        
</ tr >
        
< tr >
            
< td >< input  type ="button"  onclick ="add()"  value ="add" /></ td >
            
< td >< input  type ="button"  onclick ="edit()"  value ="edit" /></ td >
            
< td >< input  type ="button"  onclick ="del()"  value ="del" /></ td >
            
< td > <!-- <input type="button" onclick="test()" value="test"/> --> </ td >
        
</ tr >
    
</ table >
    
<!--
<td><input type="button" onclick="test2()" value="test2"/></td>
<td><input type="button" onclick="alert(selectedRowIndex)" value="test2"/></td>
-->
</ BODY >
</ HTML >
本文转自博客园执着的笨蛋的博客,原文链接:js table 操作-----实现table的插入、修改、删除 ,如需转载请自行联系原博主。
目录
相关文章
|
5天前
|
缓存 JavaScript 前端开发
【JavaScript 技术专栏】DOM 操作全攻略:从基础到进阶
【4月更文挑战第30天】本文深入讲解JavaScript与DOM交互,涵盖DOM基础、获取/修改元素、创建/删除元素、事件处理结合及性能优化。通过学习,开发者能掌握动态改变网页内容、结构和样式的技能,实现更丰富的交互体验。文中还讨论了DOM操作在实际案例、与其他前端技术结合的应用,助你提升前端开发能力。
|
6天前
|
存储 缓存 JavaScript
【Web 前端】JS哪些操作会造成内存泄露?
【4月更文挑战第22天】【Web 前端】JS哪些操作会造成内存泄露?
|
9天前
|
JavaScript 前端开发
js操作字符串的相关方法
js操作字符串的相关方法
9 3
|
9天前
|
JavaScript 前端开发
js 操作数组的方法
js 操作数组的方法
19 4
|
10天前
|
JavaScript
js_操作dom(委托和冒泡事件)
js_操作dom(委托和冒泡事件)
13 0
|
13天前
|
JavaScript 前端开发 UED
深入解析JavaScript原生操作DOM技术
【4月更文挑战第22天】本文深入探讨JavaScript原生DOM操作技术,包括使用`getElement*`方法和CSS选择器获取元素,借助`createElement`与`appendChild`动态创建及插入元素,修改元素内容、属性和样式,以及删除元素。通过掌握这些技术,开发者能实现页面动态交互,但应注意避免过度操作DOM以优化性能和用户体验。
|
20天前
|
存储 JavaScript 前端开发
JavaScript DOM 操作:解释一下 cookie、sessionStorage 和 localStorage 的区别。
Cookie是服务器发送至客户端的文本信息,会随每个请求发送回服务器,适合控制会话状态但可能暴露隐私。SessionStorage仅在当前会话中存储数据,关闭浏览器后清除,适合临时存储如登录状态。LocalStorage则持久保存数据,即使关闭浏览器也不会清除,适用于存储长期设置。三种方式各有侧重,应按需求选择。
16 0
|
20天前
|
JavaScript 前端开发 安全
JavaScript DOM 操作:解释一下浏览器的同源策略。
**同源策略**是浏览器安全基石,它阻止脚本跨不同协议、域名或端口访问资源,防止恶意行为。例如,HTTP页面无法直接用JS获取HTTPS页面内容。**CORS**允许跨域请求,但需服务器配合设置,通过`document.domain`属性可配置,但仍受限于服务器配置。
16 4
|
20天前
|
JavaScript 前端开发
JavaScript DOM 操作:如何检测浏览器是否支持某个特性?
【4月更文挑战第15天】使用Modernizr库检测浏览器特性:添加 `<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>` 到HTML,然后通过 `Modernizr.localstorage` 进行检测,如支持localStorage则执行相应代码,否则执行备用逻辑。
16 0
|
21天前
|
JavaScript 前端开发
JavaScript DOM 操作:如何选中一个 HTML 元素?有哪些方法?
在JavaScript中,有五种主要方法选取HTML元素:1) `getElementById` 通过id选取单个元素;2) `getElementsByClassName` 选取具有特定类名的所有元素;3) `getElementsByTagName` 选取特定标签的所有元素;4) `querySelector` 使用CSS选择器选取单个元素;5) `querySelectorAll` 选取匹配CSS选择器的所有元素。这些方法结合使用可精确地定位到DOM树中的目标元素。
12 1