Javascript 计数器,但按具体数字

Javascript 计数器,但按具体数字,javascript,Javascript,因此,基本上我试图创建一个计数器,它根据用户输入具有特定的增量。如果他们说是,则计数器加3,如果不是,则计数器加5。我不确定我是否只是在装傻或者什么。。。目前,所发生的一切是计数器值被3或5替换,而不是被添加到 <body> <div class="question"> <script> function myFunction() {

因此,基本上我试图创建一个计数器,它根据用户输入具有特定的增量。如果他们说是,则计数器加3,如果不是,则计数器加5。我不确定我是否只是在装傻或者什么。。。目前,所发生的一切是计数器值被3或5替换,而不是被添加到

    <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
总是从HTML
input
元素返回一个字符串

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,每次事件时递增)是否每次执行代码时都重置计数器的值?大声读出。我调用这个函数,它读取输入值,它将其设置为大写,我将计数器设置为零。