此问题涉及我的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上进行测试。谢谢你的帮助!
答案 0 :(得分:2)
使用
mi.setAttribute('value', arrayOfStrings[i]);
而不是
document.getElementById('string' + (i+1)).value = arrayOfStrings[i];
(div.appendChild(mi)
之前)。