javascript - 有没有更好的方法来创建动态 HTML 表而不使用任何 javascript 库(如 Jquery YUI 等)

标签 javascript html

别担心,我们不需要找出这段代码中的任何错误。其工作完美。

我的老板来找我说:“嘿,请告诉我为动态 HTML 表格编写代码的最佳方式是什么(添加行、删除行、更新行)。不需要添加任何 CSS。只需javascript。没有 jQuery 库等。 我很困惑,在项目进行到一半的时候,他为什么要求做一些像这样的愚蠢练习。我写了下面的代码并邮寄给他,15 分钟后我收到了一封来自他。”

我期待像你这样的人能写出更好的代码。无论如何,干得好,猴子。(并附有猴子的图片作为附件。)

那是邮件。一行一行。

我想回复他,但在此之前我想了解我的代码的质量。这真的是太坑爹了吗……!!!或者他只是在取笑我。

我不认为这段代码真的很糟糕。如果可以的话,仍然纠正我。代码工作得很好。只需将其复制粘贴到 HTML 文件中即可。

<html>
<head>
        <title>
                Crap work
        </title>
<script type="text/javascript">

function add_row()
{
        var table = document.getElementById('table');
        var rowCount = table.rows.length;
        var row = table.insertRow(rowCount);
        var cell1 = row.insertCell(0);
        var element1 = document.createElement("input");
        element1.type = "text";
        cell1.appendChild(element1);     
          var cell2 = row.insertCell(1);
        var element2 = document.createElement("input");
        element2.type = "text";
        cell2.appendChild(element2);
        var cell3 = row.insertCell(2);
        cell3.innerHTML = ' <span onClick="edit(this)">Edit</span>/<span onClick="delete_row(this)">Delete</span>';
        cell3.setAttribute("style", "display:none;");
        var cell4 = row.insertCell(3);
        cell4.innerHTML = '<span onClick="save(this)">Save</span>';
}


function save(e)
{
    var elTableCells = e.parentNode.parentNode.getElementsByTagName("td");
    elTableCells[0].innerHTML=elTableCells[0].firstChild.value;
    elTableCells[1].innerHTML=elTableCells[1].firstChild.value;
    elTableCells[2].setAttribute("style", "display:block;");
    elTableCells[3].setAttribute("style", "display:none;");
}
function edit(e)
{
    var elTableCells = e.parentNode.parentNode.getElementsByTagName("td");
    elTableCells[0].innerHTML='<input type="text" value="'+elTableCells[0].innerHTML+'">';
    elTableCells[1].innerHTML='<input type="text" value="'+elTableCells[1].innerHTML+'">';
    elTableCells[2].setAttribute("style", "display:none;");
    elTableCells[3].setAttribute("style", "display:block;");
}

function delete_row(e)
{
    e.parentNode.parentNode.parentNode.removeChild(e.parentNode.parentNode);
}
</script>
</head>
<body >
    <div id="display">
    <table id='table'>
        <tr id='id'>
            <td>
                Piemesons
            </td>

            <td>
                    23
            </td>   
            <td >
                <span onClick="edit(this)">Edit</span>/<span onClick="delete_row(this)">Delete</span>
            </td>   
            <td style="display:none;">
                <span onClick="save(this)">Save</span>
            </td>   
        </tr>   
    </table>    
        <input type="button" value="Add new row" onClick="add_row();" />
    </div>
</body> 

最佳答案

以下是我要解决的一些问题:

  1. 把它包好。全局范围内的函数可能应该是可重用的=不。
  2. 使其支持每页多个表格
  3. 使其可配置!现在您需要进入并编辑代码以添加新列。
  4. 更少的innerHTML,更多的DOM。尝试在文本框中输入引言并观察它的中断。
  5. 不使用 HTML 属性设置事件处理程序。至少使用“DOM level 0”属性( .onclick ),甚至更好, addEventListener (和attachEvent)
  6. 设置display: block;<td>上可能不是您想要的。

如果我要求某人提供一个库来制作一个可编辑的表格,我不会接受您的实现。

不过,我会给他们与上面相同的列表,而不是给他们发送猴子的照片。你的老板不成熟。下次他随机向您发送一封电子邮件询问代码时,请给他回信并附上您提出的功能和实现的简短描述,并让他首先考虑一下。

关于javascript - 有没有更好的方法来创建动态 HTML 表而不使用任何 javascript 库(如 Jquery YUI 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2845813/

相关文章:

javascript - 尝试制作一个 for 循环来绘制 SVG

javascript - 解决 "No ' Access-Control-Allow-Origin' header is present"问题与 Chrome 扩展

javascript - 我如何在 Next.js 中删除 ID 为 ="__next"的 div

javascript - 下载在 Canvas 上绘制的图像时出现问题

javascript - 如何在android上获取javascript生成的html

html - 缩放图像以适合 flexbox 布局

html - 前台导航——基于引导类和自定义 js

javascript - 如何将 Perfidies(浏览器插件漏洞扫描程序)集成到我的网站中?

javascript - 以一定间隔更改交易 View 小部件的股票代码

html - 拥有不同宽度页面的最佳方式