我对代码有些困惑,让我解释一下:

除了最后的代码,一切都正常工作,我正在努力理解为什么?
当我尝试我的代码时,调试器告诉我


  “ ReferenceError:agevalue未定义”


我明白这是什么意思,但我不明白为什么...
让我快速解释一下如果不很清楚我想要什么:我在Javascript上附加了DOM,我想将大于或等于10的一个或多个值(饮食值,年龄值,家庭值...)导入到段落中。

当我还是学生时,这是我考试的一部分,我不期望确切的答案,而是更多的线索或解决方法。顺便说一下,我知道我的代码可以改进,但是我真的很想先完成它,然后再开始对其进行改进。

谢谢您的帮助!

window.onload=changeElement;

function changeElement() {
   document.getElementById("btn1").onclick = myFunction
}


function myFunction() {
        var agevalue;
        var radiobuttons = document.getElementsByName("age");
         for (var i = 0; i < radiobuttons.length; i++) {

             if (radiobuttons[i].checked == true) {
                 agevalue = radiobuttons[i].value;
             }
         }

        var bmivalue;
        var radiobuttons = document.getElementsByName("bmi");
         for (var i = 0; i < radiobuttons.length; i++) {

             if (radiobuttons[i].checked == true) {
                 bmivalue = radiobuttons[i].value;
             }
         }

        var familyvalue;
        var radiobuttons = document.getElementsByName("family background");
         for (var i = 0; i < radiobuttons.length; i++) {

             if (radiobuttons[i].checked == true) {
                 familyvalue = radiobuttons[i].value;
             }
         }

        var dietvalue;
        var radiobuttons = document.getElementsByName("diet");
         for (var i = 0; i < radiobuttons.length; i++) {

             if (radiobuttons[i].checked == true) {
                 dietvalue = radiobuttons[i].value;
             }
         }
         var total = parseInt(agevalue) + parseInt(bmivalue) + parseInt(familyvalue) + parseInt(dietvalue);

         if (total <=15){
         document.getElementById("results").innerHTML= "Result 1"; }

         if (total >=16 && total <=25){
         document.getElementById("results").innerHTML= "Result 2"; }

         if (total >25){
         document.getElementById("results").innerHTML= "Result 3" ; }
                    }


     if (parseInt(agevalue) >= 10 || parseInt(bmivalue) >= 10 || parseInt(familyvalue) >= 10 || parseInt(dietvalue) >= 10);
     {
        document.getElementById("risks").innerHTML= "Your risks are: "

     }

最佳答案

您最后的if条件在定义变量myFunctionagevalue之外。请尝试将其放入myfunction并检查,否则您将不得不在该方法之外(在全局上下文中)声明该变量。



function myFunction() {
        var agevalue;
        var radiobuttons = document.getElementsByName("age");
         for (var i = 0; i < radiobuttons.length; i++) {

             if (radiobuttons[i].checked == true) {
                 agevalue = radiobuttons[i].value;
             }
         }

        var bmivalue;
        var radiobuttons = document.getElementsByName("bmi");
         for (var i = 0; i < radiobuttons.length; i++) {

             if (radiobuttons[i].checked == true) {
                 bmivalue = radiobuttons[i].value;
             }
         }

        var familyvalue;
        var radiobuttons = document.getElementsByName("family background");
         for (var i = 0; i < radiobuttons.length; i++) {

             if (radiobuttons[i].checked == true) {
                 familyvalue = radiobuttons[i].value;
             }
         }

        var dietvalue;
        var radiobuttons = document.getElementsByName("diet");
         for (var i = 0; i < radiobuttons.length; i++) {

             if (radiobuttons[i].checked == true) {
                 dietvalue = radiobuttons[i].value;
             }
         }
         var total = parseInt(agevalue) + parseInt(bmivalue) + parseInt(familyvalue) + parseInt(dietvalue);

         if (total <=15){
         document.getElementById("results").innerHTML= "Result 1"; }

         if (total >=16 && total <=25){
         document.getElementById("results").innerHTML= "Result 2"; }

         if (total >25){
         document.getElementById("results").innerHTML= "Result 3" ; }

if (parseInt(agevalue) >= 10 || parseInt(bmivalue) >= 10 || parseInt(familyvalue) >= 10 || parseInt(dietvalue) >= 10);
     {
        document.getElementById("risks").innerHTML= "Your risks are: "

     }
                    }

10-06 14:16
查看更多