单选按钮验证javascript
我用HTML/js创建了一个计算器,现在我正在尝试添加一些验证,但是我似乎无法让它工作 在下面的计算器中,我添加了一个脚本,该脚本检查了sex单选按钮是否未被选中,然后输出一条消息。不幸的是,当我运行它时,消息没有显示任何内容。请帮忙单选按钮验证javascript,javascript,html,jquery,Javascript,Html,Jquery,我用HTML/js创建了一个计算器,现在我正在尝试添加一些验证,但是我似乎无法让它工作 在下面的计算器中,我添加了一个脚本,该脚本检查了sex单选按钮是否未被选中,然后输出一条消息。不幸的是,当我运行它时,消息没有显示任何内容。请帮忙 函数calcCreatine(){ var sexInput=document.querySelector('input[name=“sex”]:checked')。value;; var ageInput=document.getElementsByName(
函数calcCreatine(){
var sexInput=document.querySelector('input[name=“sex”]:checked')。value;;
var ageInput=document.getElementsByName(“患者年龄”)[0]。值;
var weightInput=document.getElementsByName(“患者体重”)[0]。值;
var serumInput=document.getElementsByName(“患者血清”)[0]。值;
var结果;
if(sexInput==null){
return document.getElementById(“outs”).innerHTML=“请输入值”;
}否则{
如果(sexInput=='m'){
结果=数学四舍五入((140-年龄输入)*权重输入*1.23)/serumInput);
结果=结果.toString().bold().fontsize(6);
resultText=“mL/min”。小()+“-肌酐清除率。”;
res=result+resultText.bold();
return document.getElementById(“outs”).innerHTML=res;
}否则{
结果=数学四舍五入((140-年龄输入)*权重输入*1.04)/serumInput);
结果=结果.toString().bold().fontsize(6);
resultText=“mL/min”。小()+“-肌酐清除率。”;
res=result+resultText.bold();
return document.getElementById(“outs”).innerHTML=res;
}
}
}
肌酐清除率
计算器
病人性别:
男性
女性
患者年龄(年):
患者体重(kg):
血清肌酐(微摩尔/升):
原始Cockcroft-Gault方程:
算计
接近
重置
您的代码有几个问题
var sexInput = document.querySelector('input[name="sex"]:checked').value;
此行试图获取所选性别的值。如果表单刚刚加载,而用户尚未选择任何内容,则:
document.querySelector('input[name="sex"]:checked');
将为null
,因此您将得到一个错误:
Uncaught TypeError: Cannot read property 'value' of null
解决此问题的最简单方法是只向单选按钮添加默认值,例如:
<input type="radio" name="sex" value="m" checked>
也就是说,您还可以改进以下方面:
标记已从HTML5中删除,因此替换它是一个好主意- 由于患者性别只影响代码的一行,您可以通过在
语句中计算结果并只执行一次其余操作来删除重复部分if
我创建它是为了演示。您的代码有几个问题
var sexInput = document.querySelector('input[name="sex"]:checked').value;
此行试图获取所选性别的值。如果表单刚刚加载,而用户尚未选择任何内容,则:
document.querySelector('input[name="sex"]:checked');
将为null
,因此您将得到一个错误:
Uncaught TypeError: Cannot read property 'value' of null
解决此问题的最简单方法是只向单选按钮添加默认值,例如:
<input type="radio" name="sex" value="m" checked>
也就是说,您还可以改进以下方面:
标记已从HTML5中删除,因此替换它是一个好主意- 由于患者性别只影响代码的一行,您可以通过在
语句中计算结果并只执行一次其余操作来删除重复部分if
我创建它是为了演示。这里的问题是,当您没有选择任何单选按钮时,以下语句返回null:
document.querySelector('input[name=“sex”]:checked')
由于其为null,因此不能有value属性。所以我在代码中做了一些修改,存储了整个输入,而不是值,然后在需要时将其与value属性一起使用
这是解决办法。你自己试试吧:
函数calcCreatine(){
var sexInput=document.querySelector('input[name=“sex”]:checked');
var ageInput=document.getElementsByName(“患者年龄”)[0];
var weightInput=document.getElementsByName(“患者体重”)[0];
var serumInput=document.getElementsByName(“患者血清”)[0];
var结果;
if(sexInput==null){
return document.getElementById(“outs”).innerHTML=“请选择您的性别”;
}否则{
如果(sexInput.value=='m'){
结果=数学四舍五入((140-ageInput.value)*weightInput.value*1.23)/serumInput.value);
结果=结果.toString().bold().fontsize(6);
resultText=“mL/min”。小()+“-肌酐清除率。”;
res=result+resultText.bold();
return document.getElementById(“outs”).innerHTML=res;
}否则{
结果=数学四舍五入((140-ageInput.value)*weightInput.value*1.04)/serumInput.value);
结果=结果.toString().bold().fontsize(6);
resultText=“mL/min”。小()+“-肌酐清除率。”;
res=result+resultText.bold();
return document.getElementById(“outs”).innerHTML=res;
}
}
}
肌酐清除率
计算器
病人性别:
男性
女性
患者年龄(年):
患者体重(kg):