代码之家  ›  专栏  ›  技术社区  ›  edluis97

所见即所得编辑器中的表问题

  •  0
  • edluis97  · 技术社区  · 7 年前

    我正在从头开始创建一个HTML所见即所得编辑器,当涉及到表时,我遇到了一个问题。不知何故,我能够创建假装的列数,但只有一行(没有标题)。如果有人能说出问题所在,我将不胜感激。

    HTML

    <!DOCTYPE html>
    <html>
    <head>
        <title>Text Editor</title>
    </head>
    <body>
    
            <div id="Ribbon">
    
    <div id="Ribbon-3">
            <button class="RibbonBtn" id="TableButton" title="Insert Table"><i class="fas fa-table"></i></button>
            </div>
    
            </div>
    
            <div id="TextArea">
                <div id="WYSIWYG" contenteditable="true"></div>
    
            </div>
    
        </div>
    
    
    
    
    </body>
    </html>
    

    JS公司

    window.addEventListener("load",function(){
    
        $('#TableButton').click(function(){
            var colnum = prompt("Indicate the number of columns");
            var rownum = prompt("Indicate the number of rows");
            var table = "";
            var tablehead = "";
            var tablebodytext = "";
            for (var i = 0; i < colnum; i++) {
                tablehead += "<th>null</th>";
            }
    
            var tablebody = [];
            for (var i = 0; i < rownum; i++) {
                var tablebodyrow = "";
                for (var i = 0; i < colnum; i++) {
                    tablebodyrow += "<td>null</td>";
                }
                tablebody += "<tr>" + tablebodyrow + "</tr>";
            }
    
            table = "<table><tr>" + tablehead + "</tr>" + tablebody+ "</table>";
            document.execCommand("insertHTML",false, table);
        });
    
    
    },false);
    

    enter image description here

    我选择了5列和4行,但它只创建了5列和1行

    1 回复  |  直到 7 年前
        1
  •  0
  •   edluis97    7 年前

    我发现了错误。这么愚蠢的错误。。。 我对嵌套for循环及其父循环使用了相同的“I”var。

    这是正确的版本:

    $('#TableButton').click(function(){
            var colnum = prompt("Indicate the number of columns:");
            var rownum = prompt("Indicate the number of rows:");
            var table = "";
            var tablehead = "";
            var tablebodytext = "";
            for (var i = 0; i < colnum; i++) {
                tablehead += "<th>null</th>";
            }
    
            var tablebody = [];
            for (var i = 0; i < rownum; i++) {
                var tablebodyrow = "";
                for (var i1 = 0; i1 < colnum; i1++) {
                    tablebodyrow += "<td>null</td>";
                }
                tablebody += "<tr>" + tablebodyrow + "</tr>";
            }
    
            table = "<table><tr>" + tablehead + "</tr>" + "<tbody>" + tablebody + "</tbody>" + "</table>";
            document.execCommand("insertHTML",false, table);
        });