【问题标题】:Javascript: How to limit Add/Remove HTML text rowsJavascript:如何限制添加/删除 HTML 文本行
【发布时间】:2017-08-30 10:28:52
【问题描述】:

我正在开发一个包含一些 HTML 文本输入字段的网页 (名字/姓氏、街道地址、城市、州、邮编)

这些在行中可以有一个添加/删除按钮和一个用于删除的复选框。

以下是有效的代码,但我不太了解 JS。 我需要修改此代码,以便限制用户添加的行数。

在此先感谢你们这些可爱的 SOF 人!

function addRow(tableID) {

        var table = document.getElementById(tableID);
        var rowCount = table.rows.length;
        var row = table.insertRow(rowCount);
        var colCount = table.rows[1].cells.length;
        for(var i=0; i<colCount; i++) {
            var newcell = row.insertCell(i);
            newcell.innerHTML = table.rows[1].cells[i].innerHTML;
            //alert(newcell.childNodes);
            switch(newcell.childNodes[0].type) {
                case "text":
                        newcell.childNodes[0].value = "";
                        break;
                case "checkbox":
                        newcell.childNodes[0].checked = false;
                        break;
                case "select-one":
                        newcell.childNodes[0].selectedIndex = 0;
                        break;
            }
        }
    }

    function deleteRow(tableID) {
        try {
        var table = document.getElementById(tableID);
        var rowCount = table.rows.length;
        for(var i=0; i<rowCount; i++) {
            var row = table.rows[i];
            var chkbox = row.cells[0].childNodes[0];
            if(null != chkbox && true == chkbox.checked) {
                if(rowCount <= 2) {
                    alert("Cannot delete all the rows.");
                    break;
                }
                table.deleteRow(i);
                rowCount--;
                i--;
            }


        }
        }catch(e) {
            alert(e);
        }
    }

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    我明白了!

    function addRow(tableID) {
    
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;
            var row = table.insertRow(rowCount);
            var colCount = table.rows[1].cells.length;
            for(var i=0; i<colCount; i++) {
                if(rowCount >=11) {
                    alert("Too many rows");
                    break;
                }
                var newcell = row.insertCell(i);
                newcell.innerHTML = table.rows[1].cells[i].innerHTML;
                switch(newcell.childNodes[0].type) {
                    case "text":
                            newcell.childNodes[0].value = "";
                            break;
                    case "checkbox":
                            newcell.childNodes[0].checked = false;
                            break;
                    case "select-one":
                            newcell.childNodes[0].selectedIndex = 0;
                            break;
                }
            }
        }
    
        function deleteRow(tableID) {
            try {
            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;
            for(var i=0; i<rowCount; i++) {
                var row = table.rows[i];
                var chkbox = row.cells[0].childNodes[0];
                if(null != chkbox && true == chkbox.checked) {
                    if(rowCount <= 2) {
                        alert("Cannot delete all the rows.");
                        break;
                    }
                    table.deleteRow(i);
                    rowCount--;
                    i--;
                }
    
    
            }
            }catch(e) {
                alert(e);
            }
        }
    

    【讨论】:

    • 我认为不需要循环。您可以在var rowCount = table.rows.length;下方添加以下行:if (rowCount &gt;= 11) {alert("too many rows"); return false; }
    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 2011-07-24
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多