zoukankan      html  css  js  c++  java
  • js实现自定义修改网页中表格信息

    项目中的打印页面,为提高用户体验,需要增自定修改表格内容的功能,以下是使用示意图(双击td标签部分的内容,可自定义修改):

    以下是js插件源码,存为edit.js文件:

     1 var tbl, tbt;
     2 
     3 var body = document.getElementsByTagName('body');
     4 
     5 var tb = document.getElementsByTagName("table");
     6 tbl = tb[0].offsetLeft;
     7 tbt = tb[0].offsetTop;
     8 
     9 var list = httpCollectionToArray(document.getElementsByTagName("td"));
    10 
    11 list.forEach(function (value) {
    12     value.addEventListener('dblclick', function () {
    13         blurEdit();
    14         var left = tbl + value.offsetLeft - 5;
    15         var top = tbt + value.offsetTop - 5;
    16         var width = value.offsetWidth + 10;
    17         var height = value.offsetHeight + 10;
    18         var div = document.createElement('div');
    19         div.style.cssText = "position:absolute;" + width + "px;height:" + height + "px;border:2px solid #000;top:" + top + ";left:" + left + ";";
    20         var textarea = document.createElement('textarea');
    21         textarea.setAttribute("class", "editTextarea");
    22         textarea.style.cssText = "" + width + "px;height:" + height + "px;resize:none;";
    23 
    24         var text = document.createTextNode(value.innerText);
    25         textarea.appendChild(text);
    26         div.appendChild(textarea);
    27 
    28         textarea.addEventListener('blur', function () {
    29             var text = document.getElementsByClassName('editTextarea')[0].value;
    30        // 转换文本中的回车符和空格符
    31             text = text.replace(/
    /g, "<br/>");
    32             text = text.replace(/s/g, "&nbsp;");
    33             value.innerHTML = text;
    34             body[0].removeChild(div);
    35         });
    36 
    37         body[0].appendChild(div);
    38         document.getElementsByClassName('editTextarea')[0].focus();
    39     });
    40 });
    41 
    42 function blurEdit() {
    43     var focus = httpCollectionToArray(document.getElementsByClassName('editTextarea'));
    44     focus.forEach(function (value) {
    45         value.blur();
    46     });
    47 }
    48 
    49 function httpCollectionToArray(collections) {
    50     var array = [];
    51     for (var i = 0; i < collections.length; i++) {
    52         array[i] = collections[i];
    53     }
    54     return array;
    55 }

     使用方法:在对应的前端页面引入edit.js文件,如下:

    1 <script src="<c:url value="/staticmedia/scripts/edit.js"/>"
  • 相关阅读:
    进程间通信:命名管道FIFO(2)
    进程间通信:管道(1)
    POSIX线程学习
    进程与信号学习
    堆栈的区别与联系
    浅读《构建之法:现代软件工程》有感
    CSS学习成长记
    jquery学习成长记(一)
    html学习成长记
    Razor视图
  • 原文地址:https://www.cnblogs.com/daihu/p/10727810.html
Copyright © 2011-2022 走看看