寻找一种方法来分解具有多个\ n的字符串并将其转换为innerHTML

时间:2019-04-17 21:21:00

标签: javascript html

从昨天开始,我一直在编写JavaScript,并且是崭新的。

我有一个字符串要分解,然后变成表的输入。各项以'\ n'分隔,例如'a \ nb',表示需要在a和b之间添加新行。

我拥有的当前代码适用于'\ n'的单个实例,但是当它背靠背输入时,特别是“ 1.1 \ n2.1 \ n3.1 \ n4.1 \ n”,它退出了工作。

它与其他用逗号分隔的示例一起使用,例如“ a,b,c \ n1,2,3”,“ 1.1,1.2,1.3,1.4,1.5 \ n”和“ 1.1,1.2, 1.3、1.4、1.5 \ n2.1、2.2、2.3、2.4、2.5 \ n3.1、3.2、3.3、3.4、3.5 \ n4.1、4.2、4.3、4.4、4.5 \ n”。由于某些输入用逗号分隔,因此它必须与那些输入以及用'\ n'分隔的输入一起使用。

到目前为止,我的方法是将字符串拆分为数组,然后搜索数组的索引以查看其是否包含'\ n'。如果是这样,我将数组拆分为“ \ n”,并用两个条目而不是一个进行拼接。然后,我设置一个变量,指示我需要转到下一行,该行将移至下面的if if处。

var functionCreate = function (strInput) {

            var array = strInput.split(",");

            var html = "<table border=1><tr>";

            for (var i = 0; i < array.length; i++) {
                var newL = false;
                if (array[i].indexOf("\n") >= 0) {
                    newL = true;
                    newStr = array[i].split("\n");
                    array.splice(i, 1, newStr[0]);
                    array.splice(i + 1, 0, newStr[1]);
                }
                if (newL === true) {
                    html += "<td>" + array[i] + "</td></tr>";
                }
                else if (array[i]) {
                    html += "<td>" + array[i] + "</td>"
                }
            }

            html += "</table>"
            document.getElementById('output').innerHTML = html;

我当前输出的是:

output: "<table border=\"1\"><tbody><tr><td>1.1</td></tr><tr><td>2.1</td></tr></tbody></table>"

我的期望是:

"<table border=\"1\"><tbody><tr><td>1.1</td></tr><tr><td>2.1</td></tr><tr><td>3.1</td></tr><tr><td>4.1</td></tr></tbody></table>"

3.1和4.1即将终止,这是可以理解的,因为我认为追随2.1的所有内容都在newStr的i + 1中。

有人知道如何克服吗?有没有办法只在第一个'\ n'处拆分它,然后再次遍历循环,直到不再有换行符?

1 个答案:

答案 0 :(得分:0)

更改 var array = strInput.split(",");var array = strInput.split("\n");