我对代码有些困惑,让我解释一下:
除了最后的代码,一切都正常工作,我正在努力理解为什么?
当我尝试我的代码时,调试器告诉我
“ 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
条件在定义变量myFunction
的agevalue
之外。请尝试将其放入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: "
}
}