javascript将table的td变为可编辑的input,实现表格动态编辑

  很多场景都会遇到再网页上,用户喜欢像用excel一样,直接对html的table内容进行操作,所以写了个方便使用的插件

  csdn下载地址 :http://download.csdn.net/detail/w172087242/9589681

  升级版下载地址

CSDN有示例版博客地址

 

下面是javascript代码:

  

 

/***
  *  功能:将只读表格变成可编辑表格
  *  支持自定义事件进行编辑
  *  表格样式可以自己设置
  *  只负责tbody部分
  *  data结构样式如下:     {rows:3, data:[{name:"littlehow", age:18},{...}], column:["name", "age"]}
  *  @author littlehow
  *  @time 2016/7/29 星期五
  **/
(function() {
	var $ = function(node) {
		return typeof node == "string" ? document.getElementById(node) : node;
	}
	var $1 = function(node, parent){
		var nd = document.createElement(node);
		if(parent) parent.appendChild(nd);
		return nd;
	}
	/** 绑定事件流 */
	var bind = function(obj, eventName, funcionName){
		if(obj.addEventListener){
			obj.addEventListener(eventName, funcionName,false);
		 }else if(obj.attachEvent) {
			obj.attachEvent("on" + eventName, funcionName);
		 }else{
			obj["on" + eventName] = funcionName;
		 }
	};

	var fulltable = function(tbody, data){
		var pd = data.data;
		var column = data.column;
		for(var i=0, len=data.rows; i<len; i++){
			var tr = $1("tr", tbody);
			var cd = pd[i];
			for(var j=0,jlen=column.length; j<jlen; j++){
				var td = $1("td", tr);
				td.innerHTML = cd[column[j]];//innerText不兼容火狐,可以自己写innerText和textContent的兼容,这里就直接用innerHTML了
			}
		}
	}
	var littlehow_edit_table = function(tbody, ev){
		this.tbody = $(tbody);
		this.event = ev ? ev : "click";//默认为单机事件
		this.init = function(data) {//data可以是undefined
			if(data) {
				fulltable(this.tbody, data);
			}
			//调用可编辑
			this.edit();
		}
		this.edit = function(){
			var tds = this.tbody.getElementsByTagName("td");
			for(var i=0,len=tds.length; i<len; i++){
				bind(tds[i], this.event, this.click);
			}
		}
		this.click = function(){
			//alert(this.children.length);
			if(this.children.length > 0) return;
			var v = this.innerHTML;
			this.innerHTML = "";
			var input = $1("input", this);
			input.type = "text";
			input.value = v;
			input.focus();//光标聚集
			bind(input, "blur", blur);
		}
		var blur = function(){
			var v = this.value;
			this.parentNode.innerHTML = v;
		}
	}
	window.$$ = function(id, ev){
		return new littlehow_edit_table(id, ev);
	};
})()


如果想要调用,可以去下载频道下载。

 

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是一个可以生成可编辑,能够插入图片的网页表格JavaScript代码示例: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>可编辑、可插入图片的网页表格</title> </head> <body> <button onclick="addRow()">新增一行</button> <table id="myTable"> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>照片</th> </tr> </thead> <tbody> <tr> <td contenteditable="true">张三</td> <td contenteditable="true">25</td> <td> <input type="file" onchange="previewImage(this)"> </td> </tr> <tr> <td contenteditable="true">李四</td> <td contenteditable="true">30</td> <td> <input type="file" onchange="previewImage(this)"> </td> </tr> </tbody> </table> <script> function addRow() { var table = document.getElementById("myTable"); var newRow = table.insertRow(); var nameCell = newRow.insertCell(); var ageCell = newRow.insertCell(); var photoCell = newRow.insertCell(); nameCell.contentEditable = true; ageCell.contentEditable = true; photoCell.innerHTML = '<input type="file" onchange="previewImage(this)">'; } function previewImage(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { input.parentNode.innerHTML = '<img src="' + e.target.result + '" alt="照片">'; } reader.readAsDataURL(input.files[0]); } } </script> </body> </html> ``` 在这个例子中,我们创建了一个包含一个按钮和一个表格的HTML页面。表格包含三列:姓名、年龄和照片。姓名和年龄单元格设置为可编辑状态,照片单元格包含一个文件上传的 `<input>` 元素,用户可以使用它上传图片。 当用户选择了图片文件后,JavaScript会读取文件,并使用 `FileReader` 对象将其转换为DataURL。然后将DataURL作为 `<img>` 标签的 `src` 属性值,替换掉原来的 `<input>` 元素。这样就可以在表格中插入图片了。 当用户点击“新增一行”按钮时,JavaScript会通过 `insertRow` 和 `insertCell` 方法创建一行和单元格,并将单元格设置为可编辑状态或包含文件上传的 `<input>` 元素。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值