Javascript 为什么这个函数';s的结果显示为NaN?
我有一段简单的代码:Javascript 为什么这个函数';s的结果显示为NaN?,javascript,input,web,Javascript,Input,Web,我有一段简单的代码: var numb1=document.getElementById(“numb1”) var numb2=document.getElementById(“numb2”) var numb3=document.getElementById(“numb3”) var numb4=document.getElementById(“numb4”) var v1=parseInt(numb1) var v2=parseInt(numb2) var v3=parseInt(numb
var numb1=document.getElementById(“numb1”)
var numb2=document.getElementById(“numb2”)
var numb3=document.getElementById(“numb3”)
var numb4=document.getElementById(“numb4”)
var v1=parseInt(numb1)
var v2=parseInt(numb2)
var v3=parseInt(numb3)
var v4=parseInt(numb4)
var t=parseInt(0)
函数myFunction(){
如果(numb1.checked==true){
var t=v1+t
}else if(numb2.checked==true){
var t=v2+t
}else if(numb3.checked==true){
var t=v3+t
}else if(numb4.checked==true){
变量t=v4+t
}
document.getElementById(“demo”).innerHTML=t
}
提交
因为parseInt(elementObject)
没有返回有效的数字
您想用基数解析该值
var v1 = parseInt(numb1.value, 10);
当值实际发生变化时,必须在函数中获取这些值
另外,添加一些分号,它们并不总是需要的,但是添加分号是一种很好的做法,并且不要重新声明变量
var numb1=document.getElementById(“numb1”);
var numb2=document.getElementById(“numb2”);
var numb3=document.getElementById(“numb3”);
var numb4=document.getElementById(“numb4”);
函数myFunction(){
var v1=parseInt(numb1.value,10);
var v2=parseInt(numb2.value,10);
var v3=parseInt(numb3.value,10);
var v4=parseInt(numb4.value,10);
var t=0;
如果(1.选中){
t=v1+t;
}否则如果(2.选中){
t=v2+t;
}否则,如果(3.选中){
t=v3+t;
}否则如果(4.选中){
t=v4+t;
}
document.getElementById(“demo”).innerHTML=t
}
提交
我同意adeneo的回答。问题在于,您正在parseInt
ing一个HTML输入元素
你已经得到了答案
但我注意到您使用了if..else
因此,您只希望用户选择一个值
因此,有一个简短的方法也有助于提高加载速度和减少代码行数
使用表单
函数myFunction(){
t=parseInt(document.forms[0][“num”].value);
document.getElementById(“demo”).innerHTML=t
}
提交
使用console.log()
调试此类问题。您不需要对变量的值一无所知。浏览器中内置了许多工具,可以告诉您需要了解的代码信息。我明白了。谢谢你的建议,不客气。您会发现,至少熟悉调试工具的基础知识会使编码变得更容易。答案中有一个“片段”,表明它可以工作。很难回答为什么它对你不起作用,当它在这里起作用的时候?对不起,我想我在它完成之前读了你的答案。它现在也在工作,你能给我解释一下当变量t在函数外时它为什么不能正常工作吗?它可能在函数外声明t
,但所有numb1.value
等都必须在函数内,因为函数运行时必须读取值,否则,这些值只能在pageload上读取,永远不会更改。我肯定会更频繁地使用表单。谢谢