Javascript-我可以';我找不到我的错误。(单选按钮)

Javascript-我可以';我找不到我的错误。(单选按钮),javascript,html,button,radio,Javascript,Html,Button,Radio,我想创建一个在线测试,但我的第一个问题有问题。下面的代码不起作用,即使检查了正确答案,也会返回“你的分数为0” SSSDSDSD Mypage.com 我的网页 var合计=0; var yourmark=“你的分数是”; if(document.getElementById('q12')。选中){ 总计=总计+1; }否则{ 总计=总计; } 函数showScore(){ 警惕(你的分数+总数); } 问题1-第一选项 问题1-第二个选项 问题1-第三种选择 显示我的分数 此块: var

我想创建一个在线测试,但我的第一个问题有问题。下面的代码不起作用,即使检查了正确答案,也会返回“你的分数为0”


SSSDSDSD
Mypage.com
我的网页
var合计=0;
var yourmark=“你的分数是”;
if(document.getElementById('q12')。选中){
总计=总计+1;
}否则{
总计=总计;
}
函数showScore(){
警惕(你的分数+总数);
}

问题1-第一选项
问题1-第二个选项
问题1-第三种选择
显示我的分数
此块:

var total=0;
var yourmark="your score is  ";

if(document.getElementById('q12').checked) {
  total=total+1;
}else {
 total=total;
}
加载时在页面的开头运行。此时,
total
实际上是
0
。当你点击按钮时,你所要求的只是'total
的值。更改选项后,您绝不会更新
total`的值

正如PM 77-1所建议的,最简单的解决方案是将计算移到函数内部,这样每当您需要更新的答案时,
total
就会被计算出来


SSSDSDSD
Mypage.com
我的网页
函数showScore(){
var合计=0;
var yourmark=“你的分数是”;
if(document.getElementById('q12')。选中){
总计=总计+1;
}否则{
总计=总计;
}
警惕(你的分数+总数);
}

问题1-第一选项
问题1-第二个选项
问题1-第三种选择
显示我的分数
下面列出了事情不能按您所希望的方式运行的直接原因

  • 在分析和呈现元素之前,可以设置total的值。HTML将从上到下解析。因此,您希望将脚本移动到底部

  • 如果需要在标记中设置选项框的值,请使用“选中”而不是“值”属性

  • 您应该有类似下面的代码片段。
    
    SSSDSDSD
    Mypage.com
    我的网页
    函数showScore(){
    警惕(你的分数+总数);
    }
    
    问题1-第一选项
    问题1-第二个选项
    问题1-第三种选择
    显示我的分数 var合计=0; var yourmark=“你的分数是”; if(document.getElementById('q12')。选中){ 总计=总计+1; }否则{ 总计=总计; }

    因此,将var total=0保留为函数外部的全局变量,并创建一个函数
    checkAnswer()
    。 现在,您的javascript部分将是:

    var total = 0;    
    function checkAnswer() {
        //total is the global Variable for the score
        if (document.getElementById('q12').checked) {
            total = total + 1;
        } else {
            total = total;
        }
        return total;    
    }
    
    function showScore() {
        var yourmark = "your score is  ";
        alert(yourmark + checkAnswer());
    }
    

    希望有帮助

    您添加了在文档完全加载之前执行的脚本,这意味着您对单选按钮的检查没有任何作用将分数计算移动到
    showScore()
    函数中。就快到了。将Java标记更改为JavaScript@Barranka:获取工作代码并对其进行检查以使其更好,它不是为修复损坏/当前不工作的代码而设计的。