我对我的代码有点困惑,让我解释一下:
除最后一段代码外,一切正常,我很难理解为什么?
当我尝试我的代码时,调试器告诉我
"ReferenceError: agevalue is not defined"
我明白那是什么意思,但我不明白为什么...
如果不是很明显,让我快速解释一下我想要什么:我有一个 DOM 附加到 Javascript,我想将大于或等于 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
条件在定义变量 agevalue
的 myFunction
之外。尝试将它放在 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: "
}
}
关于Javascript - 引用错误 : agevalue is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34529940/