>  기사  >  웹 프론트엔드  >  JS를 사용하여 HTML 테이블 추가, 삭제 및 수정

JS를 사용하여 HTML 테이블 추가, 삭제 및 수정

高洛峰
高洛峰원래의
2017-01-07 10:15:021933검색

요구사항은 다음과 같습니다.

사용자 이름, 비밀번호, 이름, 이메일, 전화번호, QQ, ID 번호를 포함한 사용자 정보를 저장하는 테이블이 포함된 HTML 페이지를 작성하세요.
이제 js를 통해 테이블을 동적으로 추가, 삭제, 수정 및 확인해야 합니다(단순 메모리 작업).
먼저 페이지를 로드할 때 js를 사용하여 3개의 초기화 레코드를 로드합니다.
레코드를 추가하려면 입력을 제공하기 위한 div 레이어 팝업이 나타납니다. 각 필드는 입력 형식을 준수해야 하며 비워 둘 수 없습니다.
사용자 이름: 영어 + 숫자 + 밑줄
비밀번호: 영어 + 숫자 + 밑줄 + 6 또는
이름 : 중국어,
이메일, 전화번호, qq, ID 번호는 형식을 따릅니다.
각 레코드에는 수정 및 삭제가 있습니다.
수정은 추가와 유사합니다. ​​꼭 읽어야 합니다.

HTML 페이지 코드:

<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 <title>js增删改 v1.0</title>
 <script src="js/test.js" type="text/javascript" charset="utf-8"></script>
</head>
<body >
<center>
 <br/><br/>
 <h2>js增删改 v1.0</h2>
 <br/><br/>
 <a href="javascript:showAddInput();">添加数据</a>
 <br/><br/> 
<div class="table" >
 <table border="1" style="text-align:center" id="table">
 <tr>
  <th>用户名</th>
  <th>密码</th>
  <th>姓名</th>
  <th>邮箱</th>
  <th>电话</th>
  <th>qq</th>
  <th>身份证号</th>
  <th>操作</th>
 </tr>
 <tr>
  <td>A1</td>
  <td>123</td>
  <td>a</td>
  <td>a@qq.com</td>
  <td>123456789</td>
  <td>40040044</td>
  <td>270205197405213513</td>
  <td><a style="color:blue;cursor:pointer;" onclick="updateRow(this);" >修改<a> <a style="color:blue;cursor:pointer;" onclick="delRow(this);">删除</a></td>
 </tr>
 <tr>
  <td>A2</td>
  <td>456</td>
  <td>b</td>
  <td>b@qq.com</td>
  <td>987654321</td>
  <td>30030033</td>
  <td>470205197405213513 </td>
  <td><a style="color:blue;cursor:pointer;" onclick="updateRow(this);">修改<a> <a style="color:blue;cursor:pointer;" onclick="delRow(this);">删除</a></td>
 </tr>
 <tr>
  <td>A3</td>
  <td>789</td>
  <td>c</td>
  <td>c@qq.com</td>
  <td>800800820</td>
  <td>30030030</td>
  <td>570205197405213513 </td>
  <td><a style="color:blue;cursor:pointer;" onclick="updateRow(this);">修改<a> <a style="color:blue;cursor:pointer;" onclick="delRow(this);">删除</a></td>
 </tr>
 </table>
</div>
 
<div style="display:none" id="addinfo">
<form>
 <br>
 用户名:(用户名只能用英文+数字或下划线)<br><input type="text" id="username" /><br><!--限制用户名只能用英文 下划线 或数字-->
 密码:(英文+数字或下划线,长度不小于6)<br><input type="text" id="password"/><br>
 姓名:(只能是汉字)<br><input type="text" id="name"/><br>
 邮箱:<br><input type="text" id="email"/><br>
 电话:<br><input type="text" id="phone"/><br>
 qq:<br><input type="text" id="qq"/><br>
 身份证:<br><input type="text" id="uid"/><br><br>
 <input type="button" value="提交" onclick="addInfo()" id="btn_add">
 <input type="button" value="提交" onclick="updateInfo()" style="display:none" id="btn_update">
 <input type="button" value="取消" onclick="hideAddInput()">
</form>
</div>
</center>
</body>
</html>

js 코드:

var row = 0 ; //定义全局行数用于修改
var reg_email = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; //用于判断邮箱格式
var reg_name = /^((\w*\d\w*[a-z]\w*)|(\w*[a-z]\w*\d\w*))$/i; //用于判断用户名格式
var reg_chinese = /^[\u0391-\uFFE5]+$/ ; //用于判断姓名格式
var reg_pass = /^((\w*\d\w*[a-z]\w*)|(\w*[a-z]\w*\d\w*))$/i;//用于判断密码格式
//----获取行号-----
function getRow(r){
 var i=r.parentNode.parentNode.rowIndex; 
 return i ;
}
//----获取行号-----
 
//----删除某一行-----
function delRow(r){ 
 document.getElementById(&#39;table&#39;).deleteRow(getRow(r));
}
//----删除某一行-----
 
//----清除添加信息框的内容-----
function cleanAddInput(){
 document.getElementById(&#39;username&#39;).value=&#39;&#39;;
 document.getElementById(&#39;password&#39;).value=&#39;&#39;; 
 document.getElementById(&#39;name&#39;).value=&#39;&#39;;
 document.getElementById(&#39;email&#39;).value=&#39;&#39;;
 document.getElementById(&#39;phone&#39;).value=&#39;&#39;;
 document.getElementById(&#39;qq&#39;).value=&#39;&#39;;
 document.getElementById(&#39;uid&#39;).value=&#39;&#39;;
}
//----清除添加信息框的内容-----
 
//----显示添加信息框-----
function showAddInput(){
 document.getElementById(&#39;addinfo&#39;).style="display:block-inline" ;
 document.getElementById(&#39;btn_add&#39;).style="display:block-inline" ;
 document.getElementById(&#39;btn_update&#39;).style="display:none" ;
 cleanAddInput(); 
}
//----显示添加信息框-----
 
//----隐藏添加信息框-----
function hideAddInput(){
 document.getElementById(&#39;addinfo&#39;).style="display:none" ;
 
}
//----隐藏添加信息框-----
 
//----判断输入框的信息是否符合要求-----
function judge(){
 //根据id获取表单信息
 var username = document.getElementById(&#39;username&#39;).value;
 var password = document.getElementById(&#39;password&#39;).value; 
 var name = document.getElementById(&#39;name&#39;).value;
 var email = document.getElementById(&#39;email&#39;).value;
 var phone = document.getElementById(&#39;phone&#39;).value;
 var qq = document.getElementById(&#39;qq&#39;).value;
 var uid = document.getElementById(&#39;uid&#39;).value;
 var judge = true ; //用于判断表单信息是否符合
 if(username==&#39;&#39;){
  judge = false ;
  alert(&#39;请输入用户名&#39;);
 }else if(password==&#39;&#39;){
  judge = false ;
  alert(&#39;请输入密码&#39;);
 }else if(name==&#39;&#39;){
  judge = false ;
  alert(&#39;请输入姓名&#39;);
 }else if(email==&#39;&#39;){
  judge = false ;
  alert(&#39;请输入邮箱&#39;);
 }else if(phone==&#39;&#39;){
  judge = false ;
  alert(&#39;请输入电话&#39;);
 }else if(qq==&#39;&#39;){
  judge = false ;
  alert(&#39;请输入qq&#39;);
 }else if(uid==&#39;&#39;){
  judge = false ;
  alert(&#39;请输入身份证&#39;);
 }else if(uid.length!=18){
  judge = false ;
  alert(&#39;身份证应为18位,请正确填写&#39;);
 }else if(qq.length<=5 &&qq.length>=13){
  judge = false ;
  alert(&#39;请正确输入qq号码&#39;);
 }else if(phone.length<3&&qq.length>12){
  judge = false ;
  alert(&#39;请正确输入电话&#39;);
 }else if(!reg_email.test(email)){
  judge = false ;
  alert(&#39;邮箱格式不正确&#39;);
 }else if(!reg_name.test(username)){
  judge = false ;
  alert(&#39;用户名格式不正确&#39;);
 }else if(!reg_chinese.test(name)){
  judge = false ;
  alert(&#39;姓名格式不正确&#39;);
 }else if((!reg_pass.test(password))||password.length<6){
  judge = false ;
  alert(&#39;密码格式不正确&#39;);
 }
  
 return judge ;
}
//----判断输入框的信息是否符合要求-----
 
//----新增信息的插入方法-----
function insertInfo(){
 //根据id获取表单信息
 var arr = new Array();
 arr[0] = document.getElementById(&#39;username&#39;).value;
 arr[1] = document.getElementById(&#39;password&#39;).value; 
 arr[2] = document.getElementById(&#39;name&#39;).value;
 arr[3] = document.getElementById(&#39;email&#39;).value;
 arr[4] = document.getElementById(&#39;phone&#39;).value;
 arr[5] = document.getElementById(&#39;qq&#39;).value;
 arr[6] = document.getElementById(&#39;uid&#39;).value;
 arr[7] ="<a style=&#39;text-align:center;color:blue;cursor:pointer;&#39; onclick=&#39;updateRow(this);&#39;>修改</a> <a style=&#39;text-align:center;color:blue;cursor:pointer;&#39; onclick=&#39;delRow(this);&#39;>删除</a>";
 var x = document.getElementById(&#39;table&#39;).insertRow(1); //获取第一行对象
  
 for(var i=0;i<arr.length;i++){
  x.insertCell(i).innerHTML = arr[i] ; //用循环把每个数据插入第一行的每一列
 }
  
}
//----新增信息的插入方法-----
 
//----新增信息-----
function addInfo(){
  
 if(judge()==true){
  alert(&#39;添加成功&#39;);
  insertInfo(); //执行插入
  hideAddInput(); //隐藏添加信息框
   
 }else{
  alert(&#39;添加失败&#39;);
 }
}
//----新增信息-----
 
 
//----根据行号修改信息-----
function updateRow(r){
 row = getRow(r); //把该行号赋值给全局变量
 showAddInput(); //显示修改表单
 //提交按钮替换
 document.getElementById(&#39;btn_add&#39;).style="display:none" ;
 document.getElementById(&#39;btn_update&#39;).style="display:block-inline" ;
 insertInputFromQuery(queryInfoByRow(row));
  
}
//----根据行号修改信息-----
 
 
//----根据行号查信息----
function queryInfoByRow(r){
  
 var arr = new Array();
 for(var m=0 ; m<7;m++){
  arr[m] = document.getElementById(&#39;table&#39;).rows[row].cells[m].innerText;
 }
 return arr ; //返回该行数据
  
}
//----根据行号查信息----
 
//----把查询到的信息放入修改的表单里----
function insertInputFromQuery(arr){
 document.getElementById(&#39;username&#39;).value = arr[0];
 document.getElementById(&#39;password&#39;).value = arr[1];
 document.getElementById(&#39;name&#39;).value = arr[2];
 document.getElementById(&#39;email&#39;).value = arr[3];
 document.getElementById(&#39;phone&#39;).value = arr[4];
 document.getElementById(&#39;qq&#39;).value = arr[5];
 document.getElementById(&#39;uid&#39;).value = arr[6];
  
}
//----把查询到的信息放入修改的表单里----
 
 
function updateInfo(){
 if(judge()==true){
  alert(&#39;修改成功&#39;);
  document.getElementById(&#39;table&#39;).deleteRow(row);//删除原来那行  
  insertInfo(); //插入修改后的值
  hideAddInput(); //隐藏添加模块
 }else{
  alert(&#39;修改失败&#39;);
  hideAddInput();
 }
}

위 내용은 이 글의 전체 내용입니다. . 모든 사람의 학습에 도움이 되기를 바랍니다. 또한 모든 사람이 PHP 중국어를 지원하기를 바랍니다.

JS를 사용한 HTML 테이블 추가, 삭제, 수정과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.