【问题标题】:Add Variables In If Statement From Values Determined by Radio Buttons根据单选按钮确定的值在 If 语句中添加变量
【发布时间】:2014-10-24 13:38:59
【问题描述】:

我有一个简短的调查,根据您所做的选择给出最终值。问题是,只有第一个广播组,“人”被添加到最后......其他四个(组织 + 焦点 + 位置 + 携带)被忽略了。有人可以帮我弄清楚我的代码有什么问题吗?谢谢!

var score = 0;

var people = 0;
var org = 0;
var focal = 0;
var location = 0;
var carry = 0;

//PEOPLE
if ($('input:radio:checked').val() === "Obama") {
    people = -25;
}else if ($('input:radio:checked').val() === "Clinton"){
    people = -15;
}else if($('input:radio:checked').val() === "Bush"){
    people = 25;
}else if($('input:radio:checked').val() === "Romney"){
    people = 0;
}else if($('input:radio:checked').val() === "Windsor"){
    people = 25;
}else if($('input:radio:checked').val() === "Putin"){
    people = -25;
};

//ORG
if ($('input:radio:checked').val() === "Christian") {
    org = 20;
}else if ($('input:radio:checked').val() === "Boy Scouts"){
    org = 10;
}else if($('input:radio:checked').val() === "Freemason"){
    org = 30;
}else if($('input:radio:checked').val() === "KGB"){
    org = -20;
}else if($('input:radio:checked').val() === "Islam"){
    org = -30;
}else if($('input:radio:checked').val() === "Satanic Cult"){
    org = -50;
};


//FOCAL
if ($('input:radio:checked').val() === "Financial") {
    focal = 15;
}else if ($('input:radio:checked').val() === "Industry"){
    focal = 20;
}else if($('input:radio:checked').val() === "Medical"){
    focal = 5;
}else if($('input:radio:checked').val() === "Technology"){
    focal = 30;
}else if($('input:radio:checked').val() === "War"){
    focal = -30;
}else if($('input:radio:checked').val() === "Spy"){
    focal = -20;
};

//LOCATION
if ($('input:radio:checked').val() === "United Kingdom") {
    location = 5;
}else if ($('input:radio:checked').val() === "U.S.A."){
    location = -15;
}else if($('input:radio:checked').val() === "China"){
    location = 0;
}else if($('input:radio:checked').val() === "Germany"){
    location = 20;
}else if($('input:radio:checked').val() === "Russia"){
    location = -40;
}else if($('input:radio:checked').val() === "Mexico"){
    location = -60;
};

//CARRY
if ($('input:radio:checked').val() === "Tune") {
    var carry = 15;
}else if ($('input:radio:checked').val() === "Weight"){
    var carry = 25;
}else if($('input:radio:checked').val() === "Stick"){
    var carry = 0;
}else if($('input:radio:checked').val() === "Grudge"){
    var carry = -25;
}else if($('input:radio:checked').val() === "Ebola"){
    var carry = -80;
}else if($('input:radio:checked').val() === "Reset"){
    var carry = -100;
};

var score = (people + org + focal + location + carry);

if(score>50){
    $('.result').html('You Win!');
}else{
    $('.result').html('You Lose!');
}

$('p').html("Your score is " + score + ".");

【问题讨论】:

  • 您的选择器 $('input:radio:checked').val() 不正确...您还需要包含名称,例如 $('input[name="people"]:radio:checked').val() 否则它将始终给出第一个选中的单选按钮的值
  • 人的整个if..else可以简化为var pmap = { Obama: -25, Clinton: -15, Bush: 25, Romney: 0, Windsor: 25, Putin: -25 }; var people = pmap[$('input[name="people"]:radio:checked').val()] || 0;
  • 另外,if/else 花括号后不需要分号。
  • 当你在 if/else 块中只有一行代码时,你可以完全省略大括号。

标签: javascript jquery variables if-statement add


【解决方案1】:

问题在于您的单选选择器,它将始终返回所有组中第一个检查的单选值,而不是针对特定组。

解决方案是在选择器中使用无线电组名称,例如$('input[name="people"]:radio:checked').val()

除此之外,您可以使用类似的值映射来简化代码

var pmap = {
    Obama: -25,
    Clinton: -15,
    Bush: 25,
    Romney: 0,
    Windsor: 25,
    Putin: -25
};

var people = pmap[$('input[name="people"]:radio:checked').val()] || 0;

也为其他组创建类似的价值图。

【讨论】:

    猜你喜欢
    • 2016-08-04
    • 2013-07-21
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2015-09-17
    • 1970-01-01
    相关资源
    最近更新 更多