js+html表格提交数据

 
<!DOCTYPE html>
<html lang="en">
 <!----
这里通过原生js实现了表格输入功能,
总体分为一下步骤
1,创建一个表格
2,event.srcElement 获取激活事件的对象,获取已经点击的单元格索引
3,通过处理函数abc()判断输入内容并将内容显示在新的表格中。
-->
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    table,
    table td,
    table tr {
        border: 1px solid #000000;
        width: 600px;
        height: 50px;
        text-align: center;
        border-collapse: collapse;
        overflow: hidden
    }
 
    input {
        width: 30px;
        height: 30px;
        border:0;
    }
</style>
 
<body>

    <input type="text" placeholder="姓名" id="input1" value="张三">
    <input type="text" placeholder="性别" id="input2" value="男">
    <input type="text" placeholder="年龄" id="input3" value="19">
    <button>生成</button>

    <div style="height: 20px;"></div>
    <table id="tb_1"  onclick="TabClick();">
        <tr>
            <td>姓名</td>
            <td>性别</td>
            <td>年龄</td>
            <td>操作</td>
        </tr>
        <tr>
            <td>1</td>
            <td>2</td>
            <td>3</td>
            <td><a href="#">删除</a></td>
        </tr>
        <tr>
            <td>h</td>
            <td>i</td>
            <td>j</td>
            <td><a href="#">删除</a></td>
        </tr>
        <tr>
            <td>A</td>
            <td>B</td>
            <td>C</td>
            <td><a href="#">删除</a></td>
        </tr>
    </table>  
    <b style="border-bottom:1px solid blue" onclick="showTableContent('tb_1')"> 获取表格内容</b><br/>
    <b style="border-bottom:1px solid blue" onclick="sendToServer('tb_1')"> 发送到服务器</b>
    <p><div id="result"></div></p>
    <p><div id="result1"></div></p>
    <script>
       
       
        var table = document.querySelector('table')
        var btn = document.querySelector('button')
 
        function cj() {
            //获取input框的内容
            var text1 = document.getElementById('input1').value
            var text2 = document.getElementById('input2').value
            var text3 = document.getElementById('input3').value
            var arr = [text1, text2, text3]
 
            //创建表头
            var tr1 = document.createElement('tr')
            table.appendChild(tr1)
 
            //把表格加到表头后面
            for (let j = 0; j < 3; j++) {
                var td1 = document.createElement('td')
                tr1.appendChild(td1)
                td1.innerHTML = arr[j]
            }
            //创建删除按钮
            var td3 = document.createElement('td')
            tr1.appendChild(td3)
            var del = document.createElement('a')
            del.href = "#"
            del.innerHTML = '删除'
            td3.appendChild(del)
 
            //添加删除功能
            del.onclick = remove
            function remove() {
                this.parentNode.parentNode.remove()
            }
        }
        //按钮点击事件
        btn.onclick = function () {
            cj()
            document.getElementById('input1').value = ''
            document.getElementById('input2').value = ''
            document.getElementById('input3').value = ''
        }
    </script>
    <script>
        function TabClick(){                        
                    var td = event.srcElement; // 通过event.srcElement 获取激活事件的对象 td
                   // alert("行号:" + (td.parentElement.rowIndex) + ",列号:" + td.cellIndex);
                   let str =''
                   if(td.parentElement.rowIndex != undefined || td.cellIndex != undefined){
                       
                         str = td.parentElement.rowIndex.toString() +td.cellIndex.toString()
                         var oldCellValue = td.innerHTML
                     
                        //在单元格中插入一个input,并将它的id设置成行列组成的数字,将这个单元格的索引传递给失去焦点触发的函数,并将单元格的旧数据传递过去
                        //td.innerHTML="<input id='"+str+"' type='text' onblur = abc("+td.parentElement.rowIndex+","+td.cellIndex+","+oldValue+") name='temp' value='' >";
                        td.innerHTML="<input id='"+str+"' type='text' onblur = abc('"+td.parentElement.rowIndex+"','"+td.cellIndex+"','"+str.toString()+"','"+oldCellValue+"') name='temp' value='"+oldCellValue+"'/>";
                        var input1=document.getElementById(str); //获取到创建的input
                        input1.focus(); //让input获得焦点
                   } else {
                        console.log('否则'+td.parentElement.rowIndex);                      
                   }
                }
        function abc(row,cell,nInputId,oldCellValue){ //处理input失去焦点时的动作
           
            /*
                1,通过ID获得创建的input
                2,通过ID获得当前表格
                3,判断input是否输入了值
                    3.1没有输入就写入单元格之前的值
                    3.2输入了就写入输入过的值
                4,通过传递过来的表格索引,给当前点击的单元格写入内容
            */
            let nInput = document.getElementById(nInputId)
            let table= document.getElementById('tb_1')
            nInput.onchange = function(){
                console.log('aaa')
            }              
            if(nInput.vallue !='' ){
                console.log(oldCellValue)
                console.log(nInput.value)
                table.rows[row].cells[cell].innerHTML = nInput.value
                console.log('不是空的')
               
            } else {
                console.log('空')
                table.rows[row].cells[cell].innerHTML = oldCellValue
            }
            if(table.rows[row].cells[cell] == ''){
                    table.rows[row].cells[cell].innerHTML = oldCellValue
                }
        }
       
    </script>
    <script>
           
        /**
         * 遍历表格内容返回数组
         * @param Int  id 表格id
         * @return Array
         */
         function getTableContent(id){
            var mytable = document.getElementById(id);
            var data = [];
           
            for(var i=0,rows=mytable.rows.length; i<rows; i++){
            for(var j=0,cells=mytable.rows[i].cells.length; j<cells; j++){
                if(!data[i]){
                data[i] = new Array();
                }
                data[i][j] = mytable.rows[i].cells[j].innerHTML;
            }
            }
            return data;
        }      
        /**
         * 显示表格内容
         * @param Int  id 表格id
         */
         function showTableContent(id){
            var data = getTableContent(id);
            var tmp = '';
            console.log(data)
            for(i=1,rows=data.length; i<rows; i++){//循环从第一行开始,0行作为表头,包含了JSON的键信息
                for(j=0,cells=data[i].length-1; j<cells; j++){
                    tmp +="\""+ data[0][j]+"\"\:\""+data[i][j] + "\","//遍历数据加入使数据形成JSON格式。
                }
            tmp += ';';
            }
            let tmp1 = tmp.split(';')//用;号把数据分割成数组
            var JsonTmp ={'a':'1'}
            for(let i =0;i<tmp1.length;i++){ //循环用,号把数据分割成数组。
                let qq = "{"+tmp1[i].substr(0,tmp1[i].length-1)+"}"//加上{}大括号才能使用JSON.parse()
                JsonTmp[i] = JSON.parse(qq) //将字符串变成对象,放入对象变量中              
            }
            console.log(tmp1)
           Object.keys(JsonTmp).forEach(function(key){
                console.log(key,JsonTmp[key]);
            });
            tmp += '<br/>数据类型是'+typeof(tmp)
            document.getElementById('result').innerHTML = tmp;            
            document.getElementById('result1').innerHTML = tmp1;
            //sendToServer(tmp1)
           
        }
        function sendToServer(tmp1){//将tmp1发送给后台,由后台处理数据变成JSON
                var xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function () {
                    if (xhr.readyState == 4) {  //返回数据后在这里将数据写入当前页面          
                        //document.getElementById('content').innerHTML = htmls;    
                        document.getElementById(inputData.proId).innerHTML=xhr.responseText      
                        }
                }
                xhr.open('POST','/outProduct');//设置URL前缀默认会在当前域名下加上如上后缀,例如:www.jsit.net.cn/outProduct
                xhr.send(tmp1);  //要发送的数据放在这里  
            }
    </script>
</body>
 
</html>
posted @ 2023-12-18 17:38  晨曦与晚霞之间  阅读(102)  评论(0编辑  收藏  举报