我正在尝试练习javascript,我在一个网站上阅读了一个关于建立一个小系统的小挑战,用户可以关注和取消关注。我仍然是javascript和编程的新手,所以请原谅我的无知。以下是我提出的建议。我试图让这一点脱颖而出,因为这可能是学习语言imo的最佳方式。
基本上在这个小函数中,我在函数中创建了一个空数组。然后我将函数设置为标记中的onClick处理程序。这是存储名称或事物的好方法吗?我是在正确的轨道上完成这项小任务吗?
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input id="searchbox" value = "names">
<button type="radio" onClick="listOfPeople();">
<script type="text/javascript">
"use strict";
function listOfPeople (){
var storedPeople = [];
listOfPeople();
};
</script>
</body>
</html>
答案 0 :(得分:1)
由于你已经在listOfPeople函数中声明了storedPeople数组,这将限制“范围”,你可以在其中添加或删除项目到listOfPeople函数。
这样的东西当前不能用于你的设置,因为storedPeople数组是在一个“闭包”中,因为它是在一个函数内声明的。
<script type="text/javascript">
function listOfPeople (){
var storedPeople = [];
listOfPeople();
};
alert(storedPeople[0]);
</script>
这应该显示如何在函数外部声明数组,因此它具有“更宽的范围”,这意味着它可以通过listOfPeople函数内部访问。
<!DOCTYPE html>
<html>
<body>
<input id="searchbox" value = "names">
<button type="radio" onClick="listOfPeople();">
<script type="text/javascript">
// declare the storedPeople array outside of the function
var storedPeople = [];
// modify the array in the function
function listOfPeople (){
storedPeople.push(document.getElementById("searchbox").value);
};
</script>
</body>
</html>
答案 1 :(得分:0)
您正确地拨打了按钮。
但是你的javascript函数中存在一个问题:在listOfPeople&#39;内部。你打电话给listOfPeople&#39;。 你不应该这样做,因为它永远不会一次又一次地停止调用同一个函数。然后堆栈溢出:超出最大调用堆栈大小。
您的功能应如下所示:
function listOfPeople (){
var storedPeople = [];
};
否则这是一个好的开始!
答案 2 :(得分:0)
你没有明确提到你需要你的代码要做什么。 像其他提到的那样,listofpeople()是recusrive,但没有条件打破它。 尝试在http://plnkr.co/中创建代码,并解释您想要的是什么,而不是发生了什么。
答案 3 :(得分:0)
如果您想要按照用户类型逐步进行搜索,可以使用“onchange&#39;请参阅此处的演示http://www.w3schools.com/jsref/event_onchange.asp
作为Zack代码的修改,它将是
<body>
<input id="searchbox" value = "names" onchange="listOfPeople();">
<button type="radio" onClick="listOfPeople();">