JS基础:如何在函数内部使用if/else并设置为变量

JS Basics: How to use if/else inside a function and set to variable

本文关键字:else if 设置 变量 基础 内部 函数 JS      更新时间:2023-09-26

我是一个JavaScript初学者,在尝试设置内部带有if/else条件和匿名函数的变量时,我遇到了一些似乎应该有效的问题。这是我的代码:

function changeValue(){
  var newValue = (function(){
    var getRadioValue = $( "input:radio[name=Radio1]:checked" ).val();
      if (getRadioValue === 5){
         var final = 8;
      }
      else if (getRadioValue === 4){
         var final = 5;
      }
      else if (getRadioValue === 3){
         var final = 3;
      }
      else if (getRadioValue === 2){
         var final = 1;
      }
      else if (getRadioValue === 1){
         var final = -1;
      }
      else 
      {
         var final = 0;
      }
      return final;
    })();
  alert(newValue);
}

现在,警报显示为0,因为没有一个"if"返回true,但如果我将getRadioValue变量硬编码为:

var getRadioValue = 5;

则if/else条件有效,并且警报消息显示8。这使得.val()方法似乎不起作用。但是,如果我只是将警报设置为:

alert(getRadioValue);

事实上,警报消息确实显示了从我的页面上设置的单选按钮中正确选择的单选值。所以我知道这是有效的。。。现在我想不出哪里出了问题。似乎既然无线电值被正确地分配给了getRadioValue,并且条件正在工作,那么整个事情就应该工作了。我相信这是一个很基本的问题,但经过大量的研究,我似乎仍然没有得到它。任何帮助都将不胜感激!

.val()返回一个字符串,但您正在测试编号if (getRadioValue === 5){

您可能想先执行getRadioValue = parseInt(getRadioValue)

演示:

getRadioValue = parseInt("5")
var final = 0; // use var once, its cleaner ;)
if (getRadioValue === 5) {
  final = 8;
} else if (getRadioValue === 4) {
  final = 5;
} else if (getRadioValue === 3) {
  final = 3;
} else if (getRadioValue === 2) {
  final = 1;
} else if (getRadioValue === 1) {
  final = -1;
}
alert(final);

感谢CodeiSir!这就是问题所在。这是我为其他可能遇到类似问题的人准备的最后一个工作代码:

function changeValue(){
 var newValue = (function(){
   var getRadioValue = $( "input:radio[name=CalcItem1]:checked" ).val();
   var RadioValue = parseInt(getRadioValue);
      if (RadioValue === 5){
         var final = 8;
      }
      else if (RadioValue === 4){
         var final = 5;
      }
      else if (RadioValue === 3){
         var final = 3;
      }
      else if (RadioValue === 2){
         var final = 1;
      }
      else if (RadioValue === 1){
         var final = -1;
      }
      else 
      {
         var final = 0;
      }
      return final;
    })();
alert(newValue);
}