split()循环:如果字符串数= x,则插入<br/>

时间:2014-09-28 22:54:19

标签: javascript string for-loop

此问题涉及我的about split()之一,并包含有关inserting specific thing if string number is x的回答问题。

基本上,我有一个大字符串,一个特定的分隔符:,我在循环中使用.split()使用分隔符将字符串的每个部分打印到不同的输入削减它。这非常有效。

现在,我想要的是在每17个输入之后做一个断裂线(输入17然后是换行符,输入34然后是换行符,输入51 ......)。我找到了一种在我分享的第二个链接中执行此操作的方法,并且breakline有效。问题是现在只有最后一行输入填充了字符串部分(字符串的最后7个部分)。所有其他输入都是空白的。

这是最终的代码:

function cutTheString()
        {
            var str = document.getElementById('textareaString').value;
            var arrayOfStrings = str.split(':');
            for(var i = 0; i < arrayOfStrings.length; i++)
            {
                if ((i % 17) == 0)
                {
                    document.getElementById('result').innerHTML += '<br />';
                }
                var div = document.getElementById('result');
                var mi = document.createElement('input');
                mi.setAttribute('type', 'text');
                mi.setAttribute('size', '4');
                mi.setAttribute('id', 'string' + (i+1));
                div.appendChild(mi);
                document.getElementById('string' + (i+1)).value = arrayOfStrings[i];

            }
        }

有趣的是,在if ((i % 17) == 0)中,我们将0替换为x。如果x < 17,则只会填充x - 17个输入,从列表的最后一个开始。如果x > 17,则所有输入都将被填充,但分界线显然不起作用。

控制台中没有错误,而且我对Javascript的了解使我无法理解为什么会这样做。我完全看到了相关性,但我想不出任何解决方案。我尝试了与==不同的运算符而没有成功。

您可以在this JSFiddle上进行测试。谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

使用

mi.setAttribute('value', arrayOfStrings[i]);

而不是

document.getElementById('string' + (i+1)).value = arrayOfStrings[i];

div.appendChild(mi)之前)。