从昨天开始,我一直在编写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'处拆分它,然后再次遍历循环,直到不再有换行符?
答案 0 :(得分:0)
更改
var array = strInput.split(",");
至
var array = strInput.split("\n");