2014-03-12 35 views
0

我要做的就是在textarea中輸入名字和姓氏,一旦命中「enter name」按鈕,名字將進入一個數組,然後它們被排序,然後放回一個字符串並顯示在「輸出」框中。每次輸入一個名字時,它都會被添加到同一個數組中並進行排序。將名字傳入一個數組並將它們排序

我能夠獲得名稱到一個數組,並顯示在輸出框中,但我不能讓它添加名稱到列表中,或按字母順序排序。它只是取代它們。我以爲我可以使用push來添加名稱,但它似乎不起作用。任何幫助將非常感激。提前致謝。

這裏是我到目前爲止有:

<body> 
<p> 
<label for="name">Enter First and Last Name: </label> 
<input id="name" name="name" /> 
<input type="button" id="addNameBtn" value="Enter Name" /> 
<input type="button" id="clearBtn" value="Clear Output" /> 
</p> 
<p> 
<label for="output">Output:</label><br /> 
<textarea cols="20" rows="15" id="output" ></textarea> 
</p> 
<script type="text/javascript" src="js/main.js"></script> 
    <script type="text/javascript">grabText();</script> 
</body> 
</html> 


`function grabText(){ 
    var arr = []; 
    var arr2 =[]; 
    var len = arr.length; 
    for (var i = 0; i<len; i++); 
    { 
     var txt = document.getElementById('name').value; 
     var textArea = document.getElementsByTagName('textarea'); 
     if (txt !=="") 
     { 
     arr.push(txt); 
     } 
    } 
     arr2.push(arr); 
     arr2.sort(); 
    var arrStr = arr2.join(); 
     textArea[0].value = arrStr; 
     document.getElementById('name').value = ''; 
} 
var btn = document.getElementById('addNameBtn'); 
btn.onclick = grabText;` 

回答

0

Playground

var textArea = document.getElementById('output'); 
var name  = document.getElementById('name'); 
var btn  = document.getElementById('addNameBtn'); 
var arr = []; 
// Why whould you need arr2? to store the original? 

function grabText(){ 
    var txt = name.value; 
    if (txt !==""){ 
    arr.push(txt); 
    } 
    arr.sort(); 
    var arrStr = arr.join(); 
    textArea.value = arrStr; 
    name.value = ''; 
} 

btn.onclick = grabText; 
+0

謝謝!這幫了很多。如果我有更高的聲譽,我會投票給你。 – rexer

+0

@rexer不客氣!快樂編碼:) –

0

有幾件事情:

  1. for語句for (var i = 0; i<len; i++); - 注意最後一個字符 - 分號。這個for語句做得很少 - 它評估和增加我,而不是後面的語句。
  2. var len = arr.length;語法是正確的,但問題是在它之前立即聲明arr並且長度爲零。
  3. var arr2在調用之間存儲內容,但它有函數作用域,並且需要在grabText函數之外移動。
相關問題