For循环和调用数组
For loops and calling Arrays
我已经对此进行了一些修补,在我弄明白的时候慢慢纠正它,但我现在很困惑。它是提示用户输入名称并根据数组值和 return 检查它。我得到了动议,但似乎仍然不想正常工作。
这是具体说明。
onload = init;
var dwarfs = new Array();
dwarfs[0] = "Doc";
dwarfs[1]= "Grumpy";
dwarfs[2]= "Happy";
dwarfs[3]= "Sleepy";
dwarfs[4]= "Bashful";
dwarfs[5]= "Dopey";
dwarfs[6]= "Sneezy ";
document.getElementsByTagName("a")[4].onclick =
function(){
dwarfCheck();
}
function dwarfCheck(){
var name = window.prompt("Name a Dwarf from Snow White")
var dwarfFound = false
for(var i=0; i < 7; i++){
if(name == dwarfs[i])
dwarfFound = true
}
window.alert(dwarfFound)
}
var name = window.prompt("Name a Dwarf from Snow White");
var dwarfFound = false; // You haven't found him yet
for (var i = 0; i < dwarfs.length; i++) {
if (dwarfs[i] == name) {
dwarfFound = true; // if dwarf number i is the one you're looking for, then this gets set to true
break;
}
}
if (dwarfFound) {
window.alert("Found " + name + "!");
dwarfFound = false;
}
好的,有几件事。主要问题出在您的 dwarfCheck 函数中。所以我为你重写了一些内部结构。您不需要传入任何变量,因为您是从函数的提示中获取名称的。您还在遍历数组,因此您一次只处理一个矮人 (dwarf[i])。你只需要确认那个矮人不是你要找的人。如果不是,循环将检查下一个,直到它找到它或检查完所有。我放入了一个 break 语句,这样它就不会在你已经找到矮人之后继续循环(这有什么意义?)。 Window 警报通常应该包含有意义的消息,而不仅仅是 TRUE 或 FALSE。如果你要 运行 多次,你应该在完成后将值设置回 false。 (自己打扫干净是有礼貌的。)
希望对您有所帮助!
var dwarfs = new Array();
dwarfs[0] = "Doc";
dwarfs[1]= "Grumpy";
dwarfs[2]= "Happy";
dwarfs[3]= "Sleepy";
dwarfs[4]= "Bashful";
dwarfs[5]= "Dopey";
dwarfs[6]= "Sneezy ";
上面可以写成
var dwarfs = ["Doc", "Grumpy", "Happy", "Sleepy", "Bashful", "Dopey", "Sneezy"];
更短。 Javascript 允许您以这种方式定义数组。
现在,您的函数 dwarfCheck
被定义为在
中接受参数 x
function dwarfCheck(x){ ....
但是你在调用它时没有在此处传递任何参数
document.getElementsByTagName("a")[4].onclick =
function(){
dwarfCheck(); //you are calling dwarfCheck without passing any parameter even though it expects a parameter x!
}
这不会是个问题,只要你没有在这里实际使用预期的参数
var dwarfFound = dwarfs[x]
所以你必须解决这个问题。
然后你的 for
循环很奇怪,但它可以正确编写,就像这样
for(var i=0; i < 7; i++){
if(name == dwarfs[i]) {
dwarfFound = true;
window.alert(dwarfFound);
}
}
这样您就不需要编写所有这些重复的代码行,循环将节省您的输入时间。
最后,习惯以 ;
结束你的陈述。 Javascript 在大多数情况下允许您省略它,但最好使用它。
我已经对此进行了一些修补,在我弄明白的时候慢慢纠正它,但我现在很困惑。它是提示用户输入名称并根据数组值和 return 检查它。我得到了动议,但似乎仍然不想正常工作。
这是具体说明。
onload = init;
var dwarfs = new Array();
dwarfs[0] = "Doc";
dwarfs[1]= "Grumpy";
dwarfs[2]= "Happy";
dwarfs[3]= "Sleepy";
dwarfs[4]= "Bashful";
dwarfs[5]= "Dopey";
dwarfs[6]= "Sneezy ";
document.getElementsByTagName("a")[4].onclick =
function(){
dwarfCheck();
}
function dwarfCheck(){
var name = window.prompt("Name a Dwarf from Snow White")
var dwarfFound = false
for(var i=0; i < 7; i++){
if(name == dwarfs[i])
dwarfFound = true
}
window.alert(dwarfFound)
}
var name = window.prompt("Name a Dwarf from Snow White");
var dwarfFound = false; // You haven't found him yet
for (var i = 0; i < dwarfs.length; i++) {
if (dwarfs[i] == name) {
dwarfFound = true; // if dwarf number i is the one you're looking for, then this gets set to true
break;
}
}
if (dwarfFound) {
window.alert("Found " + name + "!");
dwarfFound = false;
}
好的,有几件事。主要问题出在您的 dwarfCheck 函数中。所以我为你重写了一些内部结构。您不需要传入任何变量,因为您是从函数的提示中获取名称的。您还在遍历数组,因此您一次只处理一个矮人 (dwarf[i])。你只需要确认那个矮人不是你要找的人。如果不是,循环将检查下一个,直到它找到它或检查完所有。我放入了一个 break 语句,这样它就不会在你已经找到矮人之后继续循环(这有什么意义?)。 Window 警报通常应该包含有意义的消息,而不仅仅是 TRUE 或 FALSE。如果你要 运行 多次,你应该在完成后将值设置回 false。 (自己打扫干净是有礼貌的。)
希望对您有所帮助!
var dwarfs = new Array();
dwarfs[0] = "Doc";
dwarfs[1]= "Grumpy";
dwarfs[2]= "Happy";
dwarfs[3]= "Sleepy";
dwarfs[4]= "Bashful";
dwarfs[5]= "Dopey";
dwarfs[6]= "Sneezy ";
上面可以写成
var dwarfs = ["Doc", "Grumpy", "Happy", "Sleepy", "Bashful", "Dopey", "Sneezy"];
更短。 Javascript 允许您以这种方式定义数组。
现在,您的函数 dwarfCheck
被定义为在
x
function dwarfCheck(x){ ....
但是你在调用它时没有在此处传递任何参数
document.getElementsByTagName("a")[4].onclick =
function(){
dwarfCheck(); //you are calling dwarfCheck without passing any parameter even though it expects a parameter x!
}
这不会是个问题,只要你没有在这里实际使用预期的参数
var dwarfFound = dwarfs[x]
所以你必须解决这个问题。
然后你的 for
循环很奇怪,但它可以正确编写,就像这样
for(var i=0; i < 7; i++){
if(name == dwarfs[i]) {
dwarfFound = true;
window.alert(dwarfFound);
}
}
这样您就不需要编写所有这些重复的代码行,循环将节省您的输入时间。
最后,习惯以 ;
结束你的陈述。 Javascript 在大多数情况下允许您省略它,但最好使用它。