用JavaScript为学校作业创建字母猜测游戏
所以我在这个练习上坚持太久了,不知道我做错了什么。我在使用数组和合并循环时遇到了困难 任务是将10个字母放入一个数组中,让用户猜对至少一个字母。尝试3次后,告诉用户他们已丢失并终止代码用JavaScript为学校作业创建字母猜测游戏,javascript,arrays,loops,for-loop,Javascript,Arrays,Loops,For Loop,所以我在这个练习上坚持太久了,不知道我做错了什么。我在使用数组和合并循环时遇到了困难 任务是将10个字母放入一个数组中,让用户猜对至少一个字母。尝试3次后,告诉用户他们已丢失并终止代码 <!DOCTYPE html> <html> <head> <title>Exercise 5</title> <link rel="stylesheet" type="text/css" href="css/styles5.css"/&g
<!DOCTYPE html>
<html>
<head>
<title>Exercise 5</title>
<link rel="stylesheet" type="text/css" href="css/styles5.css"/>
</head>
<body>
<!--E X C E R S I S E 5 !-->
<section id="allContent">
<div id="container">
<div class="bar1"></div><div id="bar2"></div>
<h1 id="excersize">E x c e r c i c e  5</h1>
<div id="titleBox">
<p id="titlePRG">Enter five words</p>
</div>
<input type="text" id="textField">
<form>
<input type="button" value="Enter" class="button" onclick="getValue()">
</form>
<div id="valueReturned">
<p id="returnText"><p>
</div>
<a href="index6.html"><h3> Next Exercise </h3></a>
</div>
<img src ="blank-laptop-png-transparent-pictures-free-icons-graphic-transparent-library-laptop-png-4042_3027.png" alt="laptopGraphic">
</section>
<!--E N D O F E X C E R c I c E 5 !-->
<!-- S C R I P T I N G !-->
<script>
function getValue(){
var input = document.getElementById("textField").value;
var letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] ;
var a = letters.indexOf(input);
for(var attempts = 0; attempts < 3; attempts++){
if(input == ""){
document.getElementById("valueReturned").innerHTML = "No input!";
}else if( a >= 0){
document.getElementById("valueReturned").innerHTML = "You guessed right!";
break;
} else if(input != a && attempts == 0){
document.getElementById("valueReturned").innerHTML = "Two tries left!";
}else if(input != a && attempts == 1){
document.getElementById("valueReturned").innerHTML = "One more try!";
}else if(input != a && attempts == 2){
document.getElementById("valueReturned").innerHTML = "That was your last try! Get lost!";
}
}
}// end of function
</script>
</body>
</html>
练习5
E x c E r c i c E&ensp;5.
输入五个单词
函数getValue(){
var输入=document.getElementById(“textField”).value;
变量字母=[“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”];
var a=字母.indexOf(输入);
for(变量尝试次数=0;尝试次数<3;尝试次数++){
如果(输入==“”){
document.getElementById(“valueReturned”).innerHTML=“无输入!”;
}如果(a>=0),则为else{
document.getElementById(“valueReturned”).innerHTML=“你猜对了!”;
打破
}else if(输入!=a&&truments==0){
document.getElementById(“valueReturned”).innerHTML=“还剩两次尝试!”;
}else if(输入!=a&&truments==1){
document.getElementById(“valueReturned”).innerHTML=“再试一次!”;
}else if(输入!=a&&truments==2){
document.getElementById(“valueReturned”).innerHTML=“这是您最后一次尝试!滚开!”;
}
}
}//功能结束
因此,如果用户猜对了,我希望代码停止运行,或者循环停止。
如果第一次尝试时猜测错误,则应显示消息“还剩两次尝试!”
如果第二次尝试时猜错了,则应显示消息“还剩一次尝试!”
等等
我现在没有用else语句来结束我的病情,不确定是否需要它。
我的For循环设置得不对吗?
我的if,else if条件是否不正确
我非常需要你们的帮助 让我们来看看你的逻辑
<script>
function getValue(){
var input = document.getElementById("textField").value;
var letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] ;
var a = letters.indexOf(input);
请对任何您不确定的内容进行评论问题是您每次尝试都会重复3次尝试 对于所有尝试,您都需要全局迭代 换句话说,跟踪函数外部的尝试,否则每次调用函数时,您都将尝试重置为3-它永远不会停止 下面是我对代码的重构,它还修复了一些其他问题并对其进行了优化
(() => {
let attempts = 3,
input_el = document.getElementById('textField'),
result_el = document.getElementById('valueReturned');
window.getValue = () => {
let input = input_el.value,
letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
correct = letters.includes(input),
msg;
if (!attempts)
msg = 'No attempts left!';
else if (!input)
msg = "No input!";
else if(!correct) {
attempts--;
switch (attempts) {
case 2:
msg = 'Two tries left!'
break;
case 1:
msg = 'One more try!';
break;
case 0:
msg = 'That was your last try! Get lost!';
break;
}
} else
msg = 'You guessed right!';
result_el.innerHTML = msg;
}
})();
一些注意事项:
- 用指示性的方式命名变量
- 将JS与HTML分开-将其放入专用的
文件中.JS
- 现在使用
覆盖let
var
- 考虑集中事件处理,而不是通过
属性内联JS。这也意味着我们不必为您的onclick
引用而在onclick
上声明全局函数window
- 我们将整个过程包装在一个IIFE(立即调用的函数表达式)中,以防止对全局命名空间的污染
- 想一想在每次触发事件时不需要复制的内容。我们不需要每次都从DOM中获取对相同元素的引用——让我们在函数之外这样做
相当于array.includes(val)
array.indexOf(val)!=-1
- 我还让用户不可能有超过3次的尝试
(() => {
let attempts = 3,
input_el = document.getElementById('textField'),
result_el = document.getElementById('valueReturned');
window.getValue = () => {
let input = input_el.value,
letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"],
correct = letters.includes(input),
msg;
if (!attempts)
msg = 'No attempts left!';
else if (!input)
msg = "No input!";
else if(!correct) {
attempts--;
switch (attempts) {
case 2:
msg = 'Two tries left!'
break;
case 1:
msg = 'One more try!';
break;
case 0:
msg = 'That was your last try! Get lost!';
break;
}
} else
msg = 'You guessed right!';
result_el.innerHTML = msg;
}
})();