var.before(&#39; <BR/>&#39);返回&#34; undefined不是函数&#34;

时间:2014-10-02 22:28:33

标签: javascript for-loop

我正在尝试使用函数.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(在这个中我需要在每次剪切后使用|添加一个)。

我到底错过了什么?这可能是愚蠢的,但我找不到它。提前谢谢!

1 个答案:

答案 0 :(得分:1)

您可能正在尝试使用JQuery中的.before()

由于您没有使用jQuery对象,因此无法访问。

此外,您可以从循环中取出var legend = document.getElementById('specials');

如果'<br /><br />'是数组中的文字,您可以arrayOfStrings.indexOf('<br /><br />')找到字符串的位置,然后使用.slice获取您要搜索的部分。< / p>