if,else if,else 把shuifen设置在12-16或22-38之间,但是出现问题啦

slmin=22 slmax=38 glmin=12 glmax=16

JS里:我用if,else if,else 把 shuifen这个变量的值设置在12-16或22-38之间,但是测试的时候,100以上全部也能输入并保存,求大神看看我的代码哪里需要改正。求指导,求改正


if(parseFloat(shuifen)>=parseFloat(slmin)&&parseFloat(shuifen)<=parseFloat(slmax)){
        danjia =slbiaozhunjia- (shuifen-slbiaozhun)*sljiagebodong;
        document.getElementById("ruKu.danJia").value=danjia.toFixed(2);
    }
    else if(parseFloat(shuifen)>=parseFloat(glmin)&&shuifen<=glmax  ){
       danjia =glbiaozhunjia- (shuifen-glbiaozhun)*gljiagebodong;
        document.getElementById("ruKu.danJia").value=danjia.toFixed(2);
    }
    else{alert("水分在"+glmin+"—"+glmax+"或"+slmin+"—"+slmax+"之间")}

根本没有什么else if语句,那其实是

 if
...
else
  if
  ...
  else
  ...

就你的代码,如果if关系并列,就写多个if

除了shuifen<=glmax没有转换为数字外,没看出这函数有问题。
是不是变量申明有问题

 var slmin=22,slmax=38,glmin=12,glmax=16;
测试例子,100以上没问题
 <!doctype html>
<html>
 <body>
<script>
var slmin=22, slmax=38, glmin=12, glmax=16;
var glbiaozhunjia = 20,glbiaozhun=5,sljiagebodong=1;
var slbiaozhunjia = 60,slbiaozhun=2,gljiagebodong=1;
function k(){
var shuifen = document.getElementById('sf').value;
if(parseFloat(shuifen)>=parseFloat(slmin)&&parseFloat(shuifen)<=parseFloat(slmax)){
        danjia =slbiaozhunjia- (shuifen-slbiaozhun)*sljiagebodong;
        document.getElementById("ruKu.danJia").value=danjia.toFixed(2);
    }
    else if(parseFloat(shuifen)>=parseFloat(glmin)&&shuifen<=glmax  ){
       danjia =glbiaozhunjia- (shuifen-glbiaozhun)*gljiagebodong;
        document.getElementById("ruKu.danJia").value=danjia.toFixed(2);
    }
    else{alert("水分在"+glmin+"—"+glmax+"或"+slmin+"—"+slmax+"之间")}
}
</script>
  <input id="sf" type="text" value="0"/>
  <input id="input1" type="button" value="校验" onclick='k()'/>
  <input id="ruKu.danJia" type="text" value="0"/>
 </body>
</html>

qwwwwwwwwwww**qeeeeeeeeeeeeeeeeeeeeeeeee_qwwwwwwwwwwwwwwwwwwwwwww_**qwwwwwwwwwwwwwwwwwwqwwwwwwwwwwwwwww