javascript - 无法在 JavaScript 中正确地将行添加到表中

标签 javascript

行将添加到表格中,但样式和其他设置不起作用。我不得不求助于使用适用于某些项目的innerXml...但由于某种原因,这确实适用于隐藏列或行样式。

通知表最初是使用 Razor 创建的。按钮启动 AddRow。

我很感激任何帮助?

 function AddRow() {
    var ctl = document.getElementById("Table101");

    if (ctl != null) {
        var rowCount = ctl.rows.length;
        var i = 0;
        var row = document.createElement("tr");

        row.id = "Row".concat((rowCount).toString());
        row.style = 'border: 1px solid #C0C0C0;';
        row.innerHTML = '<tr row="Row'.concat((rowCount).toString()).concat('" style="border: 1px solid #C0C0C0;">');

        // Id  hide me...Id for new items is always 0000
        var e0 = document.createElement("input");
        e0.id = "Id".concat((rowCount).toString());
        e0.type = "text";
        e0.value = "0000";
        e0.style = "display: none;";
        e0.innerHTML = '<td id="Id'.concat((rowCount).toString()).concat('" sytle="display: none;" value="0000"><input type="text">0000</td>');
        var c0 = row.insertCell(i++);
        c0.style = "display: none;";
        c0.value = "0000";
        c0.appendChild(e0);

        // checkbox
        var e1 = document.createElement("input");
        e1.id = "Checkbox".concat((rowCount).toString());
        e1.type = "checkbox";
        e1.class = "chkBox";
        e1.style = "float:left; border: 1px solid #C0C0C0;";
        e1.innerHTML = '<td style="border: 1px solid #C0C0C0; width: 15px; height: 15px; max-width: 15px;"><input type="checkbox" style="float: left;" id="Checkbox'.concat((rowCount).toString()).concat('" class="chkBox"></td>');
        var c1 = row.insertCell(i++);            
        c1.style = "border: 1px solid #C0C0C0; width: 25px; height: 15px; max-width: 15px;";
        c1.appendChild(e1);

        // region
        var e2 = document.createElement("input");
        e2.type = "select-one";
        e2.style = "border: 1px solid #C0C0C0; width: 100px; height: 15px; max-width: 15px; ";
        e2.innerHTML = '<td style="border: 1px solid #C0C0C0; width: 100px; height: 15px; max-width: 15px;"><input type="select-one"></td>';
        var c2 = row.insertCell(i++);            
        c2.style = "border: 1px solid #C0C0C0; width: 100px; height: 15px; max-width: 15px;";
        c2.appendChild(e2);

        ctl.appendChild(row);
    }
 }

根据 Michael 的建议进行了更新(如下所示)...但是使用列的 style 属性和 innerHTML 时,格式设置效果不佳。一个、另一个或两者都不起作用。

function AddRow() {
    var ctl = document.getElementById("Table1");

    if (ctl != null) {
        var rowCount = ctl.rows.length;          
        var row = document.all("Table1").insertRow();

        row.id = "Row" + rowCount.toString();
        row.style = 'border: 1px double #C0C0C0;';

        // Id -- hidden
        c0 = row.insertCell();
        c0.style = "display: none;";
        c0.value = "0000";
        c0.innerHTML = '<input type="text" style="display: none;" value=0000>';

        // checkbox
        c1 = row.insertCell();
        c1.style = "border: 1px double #C0C0C0; width: 25px; height: 15px; max-width: 15px;";
        c1.innerHTML = '<input type="checkbox" style="position: relative; left: 0px;"  id="Checkbox' + rowCount.toString() + '" class="chkBox">';

        c2 = row.insertCell();
        c2.style = "border: 1px double #C0C0C0; width: 100%; height: 15px; max-width: 15px;";
        c2.innerHTML = '<input type="text"  style="border: 1px double #C0C0C0; width: 100%; height: 15px; max-width: 15px;">';

        c3 = row.insertCell();
        c3.style = "border: 1px double #C0C0C0; width: 100%; height: 15px; max-width: 15px; background-color: #FFFFFF;";
        c3.innerHTML = '<input type="text" style="border: 1px double #C0C0C0; width: 100px; height: 15px; max-width: 15px;">';

        c4 = row.insertCell();
        c4.style = "border: 1px double #C0C0C0; width: 100%; height: 15px; max-width: 15px;";
        c4.innerHTML = '<input type="text" style="border: 1px double #C0C0C0; width: 100%; height: 15px; max-width: 15px;">';

    }
}

最佳答案

表格有自己的方法 - 您可以使用 InsertRow 创建新行,并使用该行上的 insertCell 创建新单元格。可以找到一个示例 here .

此外,您不通过style设置样式。相反,您可以单独设置属性,例如:

c1.style.border = '1px solid #C0C0C0';

或者通过 cssText 属性,如下所示:

row.style.cssText = 'border: 1px solid #C0C0C0;';

关于javascript - 无法在 JavaScript 中正确地将行添加到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11380982/

相关文章:

javascript - 测试指令元素时未定义父级

javascript - 如何在指令模板中呈现双花括号?

javascript - 如何在屏幕上跟随 jQuery 动画 div?

javascript - 在鼠标悬停上使用 d3.js 时,工具提示未显示在元素顶部

javascript - 如何对包含 unicode 字符的 url 进行转义

javascript - 比较 userInput JavaScript

javascript - `getElementById` 返回空值

javascript - chrome 浏览器不在打印预览页面或保存的 pdf 文件上显示 png 图像

javascript - 使用服务更新 ng-change 上的焦点元素 ng-class

javascript - Mozilla团队由于内容安全政策而禁用了我的插件-如何正确设置 list ?