我正在尝试使用函数.before()
来分隔for-loop
生成的一些输入。为了使它工作,我必须使用变量作为参考来知道插入<br>
的位置。问题是它返回Uncaught TypeError: undefined is not a function
而我找不到任何会阻止我这样做的文档。
以下是代码:
<textarea id="textareaString">0|1|2|3</textarea>
<br />
<button onClick="cut()">Cut!</button>
<div id="specials"></div>
function cut() {
var str = document.getElementById('textareaString').value;
var arrayOfStrings = str.split('|');
for(var i = 0; i < arrayOfStrings.length; i++) {
var legend = document.getElementById('specials');
var mo = document.createElement('input');
mo.setAttribute('type', 'text');
mo.setAttribute('size', '5');
mo.setAttribute('id', 'special' + (i+1));
mo.setAttribute('value', arrayOfStrings[i]);
legend.appendChild(mo);
}
console.log(arrayOfStrings);
arrayOfStrings.before('<br /><br />');
}
根据有问题的行是最后一行:arrayOfStrings.before('<br /><br />');
你可以播放它on this JSFiddle。请考虑我在这里删除了大量代码的事实,我不能考虑使用输入的id
作为.before()
的参考,它可以在这里工作,但不能用完整的代码。如果你想查看它,它是in this JSFiddle(在这个中我需要在每次剪切后使用|
添加一个)。
我到底错过了什么?这可能是愚蠢的,但我找不到它。提前谢谢!
答案 0 :(得分:1)
您可能正在尝试使用JQuery中的.before()
由于您没有使用jQuery对象,因此无法访问。
此外,您可以从循环中取出var legend = document.getElementById('specials');
。
如果'<br /><br />'
是数组中的文字,您可以arrayOfStrings.indexOf('<br /><br />')
找到字符串的位置,然后使用.slice
获取您要搜索的部分。< / p>