Javascript-ReferenceError:未定义agevalue
我对我的代码有点困惑,让我解释一下: 除了最后一段代码外,其他一切都正常工作,我很难理解为什么?Javascript-ReferenceError:未定义agevalue,javascript,html,Javascript,Html,我对我的代码有点困惑,让我解释一下: 除了最后一段代码外,其他一切都正常工作,我很难理解为什么? 当我尝试我的代码时,调试器告诉我 “ReferenceError:未定义agevalue” 我明白这意味着什么,但我不明白为什么… 让我快速解释一下,如果不明显,我想要什么:我有一个附加到Javascript的DOM,我想将大于或等于10的值/值(dietvalue、age值、familyvalue…)导入到一个段落中 由于我是一名学生,这是我考试的一部分,我并不期望得到准确的答案,而是更多的线索或
当我尝试我的代码时,调试器告诉我 “ReferenceError:未定义agevalue” 我明白这意味着什么,但我不明白为什么…
让我快速解释一下,如果不明显,我想要什么:我有一个附加到Javascript的DOM,我想将大于或等于10的值/值(dietvalue、age值、familyvalue…)导入到一个段落中 由于我是一名学生,这是我考试的一部分,我并不期望得到准确的答案,而是更多的线索或解决方法。顺便说一句,我知道我的代码可以改进,但我真的想在开始改进之前完成它 谢谢你的帮助
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: "
}
window.onload=changelement;
函数changelement(){
document.getElementById(“btn1”).onclick=myFunction
}
函数myFunction(){
风险价值;
var radiobuttons=document.getElementsByName(“年龄”);
对于(var i=0;i=10 | | parseInt(bmivalue)>=10 | | parseInt(familyvalue)>=10 | | parseInt(dietvalue)>=10);
{
document.getElementById(“风险”).innerHTML=“您的风险是:”
}
如果条件不在定义变量agevalue
的myFunction
范围内,您的上一个。尝试将其放入myfunction
中并选中,否则必须在此方法之外声明该变量(在全局上下文中)
i、 e
函数myFunction(){
风险价值;
var radiobuttons=document.getElementsByName(“年龄”);
对于(var i=0;i=10 | | parseInt(bmivalue)>=10 | | parseInt(familyvalue)>=10 | | parseInt(dietvalue)>=10);
{
document.getElementById(“风险”).innerHTML=“您的风险是:”
}
}
您在for
循环中定义agevalue
:
var agevalue;
var radiobuttons = document.getElementsByName("age");
for (var i = 0; i < radiobuttons.length; i++) {
if (radiobuttons[i].checked == true) {
agevalue = radiobuttons[i].value;
}
}
如果你仔细检查一下
你得到
jshint是一个有用的工具。欢迎使用SO!你会做小提琴吗?这将更容易诊断和帮助您。通过查看代码1,可能的问题是,如果您没有选中组的任何单选按钮,该值将保持undefined
,并且parseInt
将抛出错误。还应始终使用不同的变量名。您已经多次定义了单选按钮
请尝试将您的代码减少到不起作用的程度。这样做,您可能会发现并修复错误。另外,调试器
和所有调试工具都是您的朋友!你知道错误发生在哪一行吗?该错误可能很容易,因为没有选中年龄复选框,然后将不会分配给agevalue
,因为没有设置默认值。重要提示:您还应始终将parseInt
函数的第二个参数10指定为parseInt(x,10)
otherwize它会将您的输入视为十六进制,这意味着字符串“10”
将变成数字16
(代码中没有那么明显的错误)参考:您在底部附近的“结果3”上有一个额外的}
。同样的好工具+1
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 agevalue = 1;
Four undefined variables
57 agevalue
57 bmivalue
57 familyvalue
57 dietvalue