我要尝试做的是在textarea中输入名字和姓氏,一旦点击“输入名称”按钮,名称将进入一个数组,在那里排序,然后放回一个字符串并显示在“输出”框。每次输入名称时,它都会被添加到同一个数组中并进行排序。
我能够将名称输入到数组中,并显示在输出框中,但是我无法将其添加到列表中,或者按字母顺序对它们进行排序。它只是取代它们。我以为我可以用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 :(得分:0)
一些事情:
for (var i = 0; i<len; i++);
- 注意最后一个字符 - 分号。这个for语句做的很少 - 它评估和增加i,而不是后面的语句。var len = arr.length;
语法是正确的,但问题是arr在它之前被声明并且长度为零。var arr2
将内容存储在调用之间,但它具有函数范围,需要移到grabText函数之外。答案 1 :(得分:0)
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;