Javascript 计数器,但按具体数字
因此,基本上我试图创建一个计数器,它根据用户输入具有特定的增量。如果他们说是,则计数器加3,如果不是,则计数器加5。我不确定我是否只是在装傻或者什么。。。目前,所发生的一切是计数器值被3或5替换,而不是被添加到Javascript 计数器,但按具体数字,javascript,Javascript,因此,基本上我试图创建一个计数器,它根据用户输入具有特定的增量。如果他们说是,则计数器加3,如果不是,则计数器加5。我不确定我是否只是在装傻或者什么。。。目前,所发生的一切是计数器值被3或5替换,而不是被添加到 <body> <div class="question"> <script> function myFunction() {
<body>
<div class="question">
<script>
function myFunction() {
var userAnswerRaw = document.getElementById("uAnswer").value;
var userAnswer = userAnswerRaw.toUpperCase();
document.getElementById("test").innerHTML = userAnswer;
var counter = 0;
switch(String(userAnswer)){
case "YES":
counter+= 3;
document.getElementById("counterDisplay").innerHTML = counter;
break;
case "NO":
counter+= 5;
document.getElementById("counterDisplay").innerHTML = counter;
break;
default:
alert("You need to input either Yes or no!")
break;
}
}
</script>
<h1>Questions</h1>
<p id="test"></p>
<p id="counterDisplay"></p>
<button onclick="myFunction()">Click</button>
<input type="text" id="uAnswer">
</div>
</body>
函数myFunction(){
var userAnswerRaw=document.getElementById(“uAnswer”).value;
var userAnswer=userAnswerRaw.toUpperCase();
document.getElementById(“test”).innerHTML=userAnswer;
var计数器=0;
开关(字符串(用户应答)){
案例“是”:
计数器+=3;
document.getElementById(“计数器显示”).innerHTML=计数器;
打破
案例“否”:
计数器+=5;
document.getElementById(“计数器显示”).innerHTML=计数器;
打破
违约:
警报(“您需要输入是或否!”)
打破
}
}
问题
点击
任何帮助、提示和进一步阅读都将不胜感激!谢谢
编辑:非常感谢大家,我只需要添加我的变量,这样它就不会在每次函数运行时重置。哇 如果您有计数器初始化
var counter = 0;
在switch语句的正上方,它将始终以
0
开头,并且只需更改为正在发生的任何场景。您需要将初始化移到更高的范围,以便在进入开关之前不会总是将其重置为0
。您的计数器初始化为零,因此当您添加三个或五个计数器时,它将是三个或五个。您的
需要在计数器不在功能范围内的情况下看起来像这样
<script>
var counter = 0;
function myFunction() {
var userAnswerRaw = document.getElementById("uAnswer").value;
var userAnswer = userAnswerRaw.toUpperCase();
document.getElementById("test").innerHTML = userAnswer;
switch(String(userAnswer)){
case "YES":
counter+= 3;
document.getElementById("counterDisplay").innerHTML = counter;
break;
case "NO":
counter+= 5;
document.getElementById("counterDisplay").innerHTML = counter;
break;
default:
alert("You need to input either Yes or no!")
break;
}
}
</script>
var计数器=0;
函数myFunction(){
var userAnswerRaw=document.getElementById(“uAnswer”).value;
var userAnswer=userAnswerRaw.toUpperCase();
document.getElementById(“test”).innerHTML=userAnswer;
开关(字符串(用户应答)){
案例“是”:
计数器+=3;
document.getElementById(“计数器显示”).innerHTML=计数器;
打破
案例“否”:
计数器+=5;
document.getElementById(“计数器显示”).innerHTML=计数器;
打破
违约:
警报(“您需要输入是或否!”)
打破
}
}
您必须将计数器声明为全局变量,因此当您增加它时,它将保留其值
您的函数应该如下所示:
var counter = 0;
function myFunction() {
let userAnswerRaw = document.getElementById("uAnswer").value;
let userAnswer = userAnswerRaw.toUpperCase();
document.getElementById("test").innerHTML = userAnswer;
switch(String(userAnswer)){
case "YES":
counter+= 3;
document.getElementById("counterDisplay").innerHTML = counter;
break;
case "NO":
counter+= 5;
document.getElementById("counterDisplay").innerHTML = counter;
break;
default:
alert("You need to input either Yes or no!")
break;
}
}
除了需要将声明和初始化计数器
移动到函数之外,您还可以通过使用值对象和简单检查答案是否有效来稍微更改样式
顺便说一句,userAnswer
已经是一个字符串,因此不需要再进行转换,因为value
总是从HTMLinput
元素返回一个字符串
const
answers = { YES: 3, NO: 5 },
userAnswer = document.getElementById("uAnswer").value.toUpperCase();
if (userAnswer in answers) {
counter += answers[userAnswer];
document.getElementById("counterDisplay").innerHTML = counter;
} else {
alert("You need to input either YES or NO!");
}
请将html部分和事件添加到问题中。我认为计数器是在函数的作用域中定义的(设置为0,并在每个事件中递增)。您需要将其定义为全局变量。(初始化时设置为0,每次事件时递增)是否每次执行代码时都重置计数器的值?大声读出。我调用这个函数,它读取输入值,它将其设置为大写,我将计数器设置为零。