2014-10-02 56 views
0

我試圖使用函數.before()來分隔for-loop生成的一些輸入。爲了使它工作,我必須使用一個變量作爲參考來知道在哪裏插入<br>。問題是它返回Uncaught TypeError: undefined is not a function,我找不到任何會阻止我像我一樣做的文檔。var.before('<br>');返回「未定義不是函數」

下面的代碼:

<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

legend.appendChild(document.createElement(「br」)); – dandavis 2014-10-02 22:29:52

+0

哪個「函數'.before()'」?沒有函數'.before()'!請告訴我可以使用的文檔。 – Bergi 2014-10-02 22:40:00

+0

這實際上是一個jQuery函數:http://api.jquery.com/before/無論如何,@ dandavis給了我一個完美的工作答案,謝謝!如果你想做一個真正的回覆,所以我可以接受它:)更新JSFiddle 1:http://jsfiddle.net/s0hjx2ob/1,更新JSFiddle 2:http://jsfiddle.net/uavgrac2/2/ – Orphal 2014-10-02 22:44:00

回答

1

你大概既然你不是用jQuery對象的工作使用.before()從JQuery的

,。之前不會入店你。

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

如果'<br /><br />'是數組中的文本,則可以使用arrayOfStrings.indexOf('<br /><br />')來查找字符串的位置,然後使用.slice來獲取正在搜索的部分。

+0

好吧,我看到, 感謝您的解釋!我把var放在循環之外。
不是數組的一部分,但@dandavis實際上找到了一個非常好的解決方法。 – Orphal 2014-10-02 22:54:43