单选按钮验证javascript

单选按钮验证javascript,javascript,html,jquery,Javascript,Html,Jquery,我用HTML/js创建了一个计算器,现在我正在尝试添加一些验证,但是我似乎无法让它工作 在下面的计算器中,我添加了一个脚本,该脚本检查了sex单选按钮是否未被选中,然后输出一条消息。不幸的是,当我运行它时,消息没有显示任何内容。请帮忙 函数calcCreatine(){ var sexInput=document.querySelector('input[name=“sex”]:checked')。value;; var ageInput=document.getElementsByName(

我用HTML/js创建了一个计算器,现在我正在尝试添加一些验证,但是我似乎无法让它工作

在下面的计算器中,我添加了一个脚本,该脚本检查了sex单选按钮是否未被选中,然后输出一条消息。不幸的是,当我运行它时,消息没有显示任何内容。请帮忙

函数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):