前端节点获取,删除table

本文详细介绍前端如何实现数据的动态加载、删除、清空、更新等操作,涵盖table元素的节点管理,ul元素的值读取,文件上传信息处理,以及数据与时间的获取方法。同时,提供了具体代码实例,帮助开发者快速理解和应用。

删除节点

	//删除一行
   function del(_this){	
	   $(_this).parent().parent().remove();
	}
	//删除一个元素
	function del1(_this){	
	   $(_this).parent().remove();
	}

清空

		//清空
		$("#filename").empty();//<ul id="filename"></ul>
    	$("#typeNo").val("");
    	//在li里面添加元素  response.result.data[i]是请求回来的数据
    	$("#filename").append("<li  value='"+response.result.data[i].url+"'>"+response.result.data[i].localName+"<span onclick='del1(this);' style='margin-left:10px;cursor:pointer;'>x</span></li>");    	

根据节点取值

//将table下的节点都放入data
var data = [];
$("#iBody tr").each(function(){
			var arr = {};
			var tdArr = $(this).children();
			arr["xuhao"] = tdArr.eq(0).text();
			arr["typeNo"] = tdArr.eq(1).text();
			arr["fileName"] =tdArr.eq(2).find("a").text();
			arr["inputTime"] = tdArr.eq(3).text();
			arr["Uuid"] = tdArr.eq(4).text();
			data.push(arr);	
		});
		//alert(JSON.stringify(data))
		//如果table列表为空 JSON.stringify(data)=="[]"

ul取值

	var ul=document.getElementById("filename").getElementsByTagName("li");
		if(ul.length<=0){
			//空
			return false;
		}
		for(var i=0;i<ul.length;i++){
			var arry1 =ul[i].getAttribute("value").split("fileName=")
			var arry2 =arry1[1].split("&localFileName")
			var arry =ul[i].getAttribute("value").split("localFileName=")
			var fileOb = {fname: arry[1],webName: arry2[0],};
                 fileJson.push(fileOb);
                 //放入另一个定义的位置(从一个div中取出ul放到另一个div中)
			html+="<a href='"+ul[i].getAttribute("value")+"'>"+arry[1]+"</a><br>";
		}

文件上传取信息

		var object = document.getElementById('file');
		var arr = object.files;
		var s=$('input[type=file]').val(); 
		//alert(arr.length);

界面刷新,加载数据库中的数据

	//获取到后台传递的数据
			var json = jQuery.parseJSON($("#a").val());
			$(json)
				.each(
						function(i, v) {
							var html = "";
							html += "<tr><td>"
									+ ($("#iBody tr").length + 1)
									+ "<input type='hidden' name='webfileName' value=''></td>";
							html += "<td>" + v.typeNo + "</td>";
							html += "<td>";
							var obj = eval('(' + v.webfileName + ')');
							//循环第二层
							$.each(obj, function(index, content) {
								html += "<a href='../report/downLoad?fileName="
										+ content.webName + "&localFileName="
										+ content.fname + "'>" + content.fname
										+ "</a><br>";
							});
							html += "</td>";
							html += "<td>" + v.inputTime + "</td>";
							html += "<td>用户上传</td>";
							html += "<td>";
							if (statusno == 20) {
								html += " <a onclick='del(this)'>删除</a><a onclick='update(this)'>/编辑</a>";
							}
							html += "</td>";
							html += "<td style='display:none'><a >"
									+ v.webfileName + "</a></td></tr>";
							$("#iBody").append(html);
						});

在table中加载一行

		$(".btn-success").click(
				function() {
					var myDate = new Date();
					var file = $("#file").val();
					var typeNo = $("#typeNo").val();
					if (typeNo == "") {
						//为空
						return false;
					}
					var arr = document.getElementById('file').files;
					var ul = document.getElementById("filename")
							.getElementsByTagName("li");
					if (ul.length <= 0) {
						//为空
						return false;
					}
					//alert(myDate.toLocaleString())  ie不能使用
					var html = "";
					html += "<tr><td>" + ($("#iBody tr").length) + "></td>";
					html += "<td>" + typeNo + "</td>";
					html += "<td>";
					var fileJson = [];
					
					for (var i = 0; i < ul.length; i++) {
						var arry1 = ul[i].getAttribute("value").split(
								"fileName=")
						var arry2 = arry1[1].split("&localFileName")
						var arry = ul[i].getAttribute("value").split(
								"localFileName=")
						var fileOb = {
							fname : arry[1],
							webName : arry2[0],
						};
						//后期
						fileJson.push(fileOb);
						html += "<a href='" + ul[i].getAttribute("value")
								+ "'>" + arry[1] + "</a><br>";
					}
					html += "</td>";
					html += "<td>" + sj() + "</td>";
					html += "<td><a onclick='del(this)'>删除</a><a onclick='update(this)'>/编辑</a></td>";
					html += "<td style='display:none'><a >"
							+ JSON.stringify(fileJson) + "</a></td></tr>";
					$("#iBody").append(html);
				});


获取目标节点信息加载到另一个地方

var row=_this.parentNode.parentNode;
   		$("#filename").empty();
    	$("#typeNo").val(row.cells[1].innerText);
   		var json = jQuery.parseJSON(row.cells[6].innerText);
	
		$(json)
				.each(
						function(i, v) {
						var m="fileName="+v.webName+"&localFileName="+v.fname;
						    	$("#filename").append("<li  value='"+m+"'>"+v.fname+"<span onclick='del1(this);' style='margin-left:10px;cursor:pointer;'>x</span></li>");
						});
						$(_this).parent().parent().remove();
						//打开另一个层
   		document.getElementById("yz_sck").style.display=''; 

获取时间

function sj(){
    var d = new Date();
            var year = d.getFullYear();
            var month = d.getMonth() + 1;
            var date = d.getDate();
            var day = d.getDay();
            var h = d.getHours();
            var m = d.getMinutes();
            var s = d.getSeconds();
            if (h < 10) { h = "0" + h; }
            if (m < 10) { m = "0" + m; }
            if (s < 10) { s = "0" + s; }
            var week = ["日", "一", "二", "三", "四", "五", "六"];
            var str = year + "-" + month + "-" + date + " " + h + ":" + m + ":" + s;
            return str;
   }
var y=[{"a":"a.txt","b":"[{\"name\":\"a.sql\",\"web\":\"a94b0abda.sql\"},{\"name\":\"11111.txt\",\"web\":\"e11c5d44611.txt\"}]"}]
//处理格式
var json = jQuery.parseJSON(y);
			$(json)
				.each(
						function(i, v) {
						alert(v.a);
						//取第二次(b)
						var obj = eval('(' + v.b+ ')');
						$.each(obj, function(index, content) {
								content.web 
							});
						});

(19013001)

<think>嗯,用户问的是如何在前端使用原生JavaScript来合并表格的表头。首先,我需要回忆一下HTML中表格的结构,特别是表头部分通常用<th>和<tr>标签来构建。合并表头主要涉及到colspan和rowspan这两个属性。 用户提到的是原生方法,所以应该避免使用jQuery或其他库,直接用纯JavaScript操作DOM。首先,我需要确定如何获取表格的表头元素。通常表头在<thead>里,里面可能有多个<tr>行,每个行里有多个<th>单元格。 接下来,合并单元格有两种方式:跨列合并(colspan)和跨行合并(rowspan)。用户可能需要的是合并同一行中的多个相邻单元格,比如将三个单元格合并成一个,这时候需要设置colspan为3,并删除被合并的单元格。或者,如果是跨行合并,可能需要设置rowspan,并调整下方行的结构。 在实现时,可能需要遍历表头中的行和单元格,根据需求定位需要合并的单元格的位置。比如,假设第一行有两个单元格需要合并,那么找到它们的索引,修改第一个的colspan,然后移除多余的单元格。需要注意的是,修改colspan或rowspan后,表格的结构会变化,后续的单元格索引也会改变,所以操作顺序很重要。 另外,动态生成表格时,可能需要在创建<th>元素时直接设置这些属性。例如,使用document.createElement('th')后,设置其colSpan属性,然后添加到对应的行中。 还要考虑兼容性问题,虽然现代浏览器都支持colspan和rowspan,但确保代码正确设置属性,比如在JavaScript中属性名是colSpan而不是colspan(虽然HTML中是大小写不敏感的,但JS中DOM属性使用驼峰命名)。 最后,可能需要提供一个具体的例子,比如用户有一个两行表头,第一行有三个单元格,需要将前两个合并,那么代码应该如何修改DOM结构。同时,需要注意在删除多余的单元格后,调整父节点中的子元素,因为直接移除会导致结构变化。 可能还需要提醒用户,合并单元格后,样式可能需要调整,比如边框和对齐方式,但这些属于CSS的范畴,不在JavaScript的处理范围内。另外,如果表格是动态生成的,确保在数据加载完成后执行合并操作,避免DOM未完全加载导致的错误。 总结步骤应该是:获取表头行,确定需要合并的单元格的位置,设置colspan或rowspan属性,删除多余的单元格,并确保后续的单元格正确排列。可能需要通过具体的代码示例来演示这一过程,确保用户能够理解并应用。</think>要实现原生JavaScript合并表格表头,需通过操作DOM元素的`colSpan`和`rowSpan`属性。以下是具体步骤: ### 一、基础表格结构 假设原始表格结构如下: ```html <table id="myTable"> <thead> <tr> <th>月份</th> <th>收入</th> <th>支出</th> </tr> </thead> <tbody> <tr> <td>1月</td> <td>1000</td> <td>800</td> </tr> </tbody> </table> ``` ### 二、横向合并(跨列) ```javascript const table = document.getElementById('myTable'); const headerRow = table.tHead.rows[0]; // 合并前两个表头单元格 headerRow.cells[0].colSpan = 2; // 设置跨列数 headerRow.deleteCell(1); // 删除被合并的单元格 ``` 合并后表头变为: $$ \text{<th colspan="2">月份</th><th>支出</th>} $$ ### 三、纵向合并(跨行) ```javascript // 添加第二行表头 const newRow = table.tHead.insertRow(); newRow.innerHTML = '<th>详情</th><th>净收入</th>'; // 纵向合并第一列 headerRow.cells[0].rowSpan = 2; // 设置跨行数 newRow.deleteCell(0); // 删除被覆盖的单元格 ``` 此时第一列的"月份"会垂直跨两行[^1]。 ### 四、动态创建合并表头 ```javascript const table = document.createElement('table'); const thead = table.createTHead(); const row1 = thead.insertRow(); // 创建跨列表头 const mergedHeader = document.createElement('th'); mergedHeader.colSpan = 2; mergedHeader.textContent = '财务汇总'; row1.appendChild(mergedHeader); ``` ### 五、注意事项 1. 合并后需手动调整数据单元格位置 2. `colSpan`/`rowSpan`属性值必须≥1 3. 删除单元格后索引会变化,建议从右往左操作 ```javascript // 推荐的安全删除方式 function safeDeleteCells(row, startIndex, count) { for(let i = startIndex + count - 1; i >= startIndex; i--) { row.deleteCell(i); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

engr_chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值