Jquery JavaScript减少if-else循环

Jquery JavaScript减少if-else循环,jquery,Jquery,我从无线电输入字段中获取值,效果非常好 我的问题是,如果我不想从所有字段中获取值,而是从两个或三个字段中获取值,那么我的脚本将无法工作 以下是我的例子: <script> /* View check boxes */ var value_one = $('input[type=radio][name=value_one]:checked').data('value_one'); var value_two = $('input[type=radio][name=value_t

我从无线电输入字段中获取值,效果非常好

我的问题是,如果我不想从所有字段中获取值,而是从两个或三个字段中获取值,那么我的脚本将无法工作

以下是我的例子:

<script>

 /* View check boxes */
 var value_one = $('input[type=radio][name=value_one]:checked').data('value_one');
 var value_two = $('input[type=radio][name=value_two]:checked').data('value_zwei');
 var value_three = $('input[type=radio][name=value_three]:checked').data('value_three');
 var value_four = $('input[type=radio][name=value_four]:checked').data('value_four');

 if(value_one != ''){
  var result_one = ($(this).data("value_one") >= value_one == true);
 } else {
  var result_one = '';
 }

 if(value_two != ''){
  var result_two = ($(this).data("value_two") >= value_two == true);
 } else {
  var result_two = '';
 }

 if(value_three != ''){
  var result_three = ($(this).data("value_three") >= value_three == true);
 } else {
  var result_three = '';
 }

 if(value_four != ''){
  var result_four = ($(this).data("value_four") >= value_four == true);
 } else {
  var result_four = '';
 }

 /*
 Here begin my problem.
 */

 if(result_one && result_two && result_three && result_four){
 /*
  Do something
 */

 }
</script>

/*查看复选框*/
var value_one=$('input[type=radio][name=value_one]:选中')。数据('value_one');
var value_two=$('input[type=radio][name=value_two]:选中')。数据('value_zwei');
var value_-three=$('input[type=radio][name=value_-three]:选中')。数据('value_-three');
var value_-four=$('input[type=radio][name=value_-four]:选中')。数据('value_-four');
如果(值为1!=''){
var result\u one=($(this).data(“value\u one”)>=value\u one==true);
}否则{
var结果_one=“”;
}
如果(值2!=''){
var result\u two=($(this).data(“value\u two”)>=value\u two==true);
}否则{
var结果_two=“”;
}
如果(值三!=''){
var result\u three=($(this).data(“value\u three”)>=value\u three==true);
}否则{
var结果_三=“”;
}
如果(值四!=''){
var result\u four=($(this).data(“value\u four”)>=value\u four==true);
}否则{
var结果_四=“”;
}
/*
我的问题从这里开始。
*/
如果(结果一&结果二&结果三&结果四){
/*
做点什么
*/
}
如果我只想从三个字段中获取值,例如仅从result\u one&&result\u two&&result\u three中获取值,那么这是行不通的。如果我用| |替换&&它将不起作用

如果需要,我如何设置三次(&T)?我需要一个主意谢谢

这里是我的HTML代码

<ul id="value_one">
 <li>value_one</li>
 <li><label for="minw01"><input type="radio" name="value_one" data-valu e_one="0" id="minw01"> egal</label></li>
 <li><label for="minw02"><input type="radio" name="value_one" data-value_one="5" id="minw02"> 5€</label></li>
 <li><label for="minw03"><input type="radio" name="value_one" data-value_one="10" id="minw03"> 10€</label></li>
 <li><label for="minw04"><input type="radio" name="value_one" data-value_one="15" id="minw04"> 15€</label></li>
 <li><label for="minw05"><input type="radio" name="value_one" data-value_one="25" id="minw05"> 25€</label></li>
 <li><label for="minw06"><input type="radio" name="value_one" data-value_one="26" id="minw06"> 26€ and more</label></li>
</ul>

<ul id="value_two">
 <li>value_two</li>
 <li><label for="lkost01"><input type="radio" name="value_two" data-value_two="1" id="lkost01"> egal</label></li>
  <li><label for="lkost02"><input type="radio" name="value_two" data-value_two="5" id="lkost02"> 5€</label></li>
  <li><label for="lkost03"><input type="radio" name="value_two" data-value_two="10" id="lkost03"> 10€</label></li>
  <li><label for="lkost04"><input type="radio" name="value_two" data-value_two="15" id="lkost04"> 15€</label></li>
  <li><label for="lkost05"><input type="radio" name="value_two" data-value_two="25" id="lkost05"> 25€</label></li>
  <li><label for="lkost06"><input type="radio" name="value_two" data-value_two="26" id="lkost06"> 26€ and more</label></li>
</ul>

<ul id="value_three">
 <li>value_three</li>
 <li><label for="essq01"><input type="radio" name="value_three" data-value_three="0" id="essq01"> egal</label></li>
 <li><label for="essq02"><input type="radio" name="value_three" data-value_three="1" id="essq02"> 1 Star</label></li>
 <li><label for="essq03"><input type="radio" name="value_three" data-value_three="2" id="essq03"> 2 Starts and more</label></li>
 <li><label for="essq04"><input type="radio" name="value_three" data-value_three="3" id="essq04"> 3 Starts and more</label></li>
 <li><label for="essq05"><input type="radio" name="value_three" data-value_three="4" id="essq05"> 4 Starts and more</label></li>
</ul>

<ul id="value_four">
 <li>value_four</li>
 <li><label for="portion01"><input type="radio" name="value_four" data-value_four="0" id="portion01"> egal</label></li>
 <li><label for="portion02"><input type="radio" name="value_four" data-value_four="1" id="portion02"> 1 Star</label></li>
 <li><label for="portion03"><input type="radio" name="value_four" data-value_four="2" id="portion03"> 2 Starts and more</label></li>
 <li><label for="portion04"><input type="radio" name="value_four" data-value_four="3" id="portion04"> 3 Starts and more</label></li>
 <li><label for="portion05"><input type="radio" name="value_four" data-value_four="4" id="portion05"> 4 Starts and more</label></li>
 </ul>
  • 价值观
  • 伊格尔
  • 5欧元
  • 10欧元
  • 15欧元
  • 25欧元
  • 26欧元及以上
  • 价值二
  • 伊格尔
  • 5欧元
  • 10欧元
  • 15欧元
  • 25欧元
  • 26欧元及以上
  • 价值三
  • 伊格尔
  • 一颗星
  • 2开始和更多
  • 3个开始和更多
  • 4个开始和更多
  • 价值四
  • 伊格尔
  • 一颗星
  • 2开始和更多
  • 3个开始和更多
  • 4个开始和更多

这里您可以使用for循环,也可以使用result动态

for(var i=0;i<10;i++){
var val = $('input[type=radio][name=value_'+(i+1)']:checked').data('value_'+(i+1));
if(val != ''){
  var result = ($(this).data("value_"+(i+1)) >= val == true);
 } else {
   var result = '';
 }
}
for(var i=0;i=val==true);
}否则{
var结果=“”;
}
}

这里您可以使用for循环,也可以使用result动态

for(var i=0;i<10;i++){
var val = $('input[type=radio][name=value_'+(i+1)']:checked').data('value_'+(i+1));
if(val != ''){
  var result = ($(this).data("value_"+(i+1)) >= val == true);
 } else {
   var result = '';
 }
}
for(var i=0;i=val==true);
}否则{
var结果=“”;
}
}

您可以使用初始值为0的var计数。只要值存储在var中(例如result_one),您就可以增加它的值。然后,您可以使用此计数值来检查包含非空值的var数量,并对其执行操作(使用加法if语句)。

您可以使用初始值为0的var计数。只要值存储在var中(例如result_one),您就可以增加它的值。然后,您可以使用此计数值来检查包含非空值的var的数量,并对其执行操作(使用加法if语句)。

您的代码应该做什么,但这应该缩短它

$("input:radio").change(function() {

  if ($("input:radio:checked").length > 2) { // Now 3 radio's has to be selected
    $("input:radio:checked").each(function() {
      var id = $(this).closest("ul").attr("id");
      var data = $(this).data(id);

      console.log(data)
    })
  }
})
$(“输入:收音机”).change(函数(){
如果($(“输入:收音机:选中”)。长度>2){
$(“输入:收音机:选中”)。每个(函数(){
var id=$(this.nexist(“ul”).attr(“id”);
var data=$(this).data(id);
console.log(数据)
})
}
})

  • 价值观
  • 伊格尔
  • 5欧元
  • 10欧元
  • 15欧元
  • 25欧元
  • 26欧元及以上
  • 价值二
  • 伊格尔
  • 5欧元
  • 10欧元
  • 15欧元
  • 25欧元
  • 26欧元及以上
  • 价值三
  • 伊格尔
  • 一颗星
  • 2开始和更多
  • 3个开始和更多
  • 4个开始和更多
  • 价值四
  • 伊格尔
  • 一颗星
  • 2开始和更多
  • 3个开始和更多
  • 4个开始和更多

好吧,你的代码应该做什么,你的信息不是那么丰富,但这应该缩短它

$("input:radio").change(function() {

  if ($("input:radio:checked").length > 2) { // Now 3 radio's has to be selected
    $("input:radio:checked").each(function() {
      var id = $(this).closest("ul").attr("id");
      var data = $(this).data(id);

      console.log(data)
    })
  }
})
$(“输入:收音机”).change(函数(){
如果($(“输入:收音机:选中”)。长度>2){
$(“输入:收音机:选中”)。每个(函数(){
var id=$(this.nexist(“ul”).attr(“id”);
var data=$(this).data(id);
console.log(数据)
})
}
})

  • 价值观
  • 伊格尔
  • 5欧元
  • 10欧元
  • 15欧元
  • 25欧元
  • 26欧元及以上
  • 价值二
  • 伊格尔
  • 5欧元
  • 10欧元
  • 15欧元
  • 25欧元
  • 26欧元及以上
  • 价值三
  • 伊格尔
  • 一颗星
  • 2开始和更多
  • 3个开始和更多
  • 4个开始和更多
  • 价值四
  • 伊格尔
  • 一颗星
  • 2开始和更多
  • 3个开始和更多
  • 4个开始和更多

请包含您的html代码是否有使用单选按钮而不是复选框的原因?是的,这是选择器过滤器的一部分。@Juergen我已经回答了,但是如果你不说你想在
中做什么
我们不能说更多请包括你的html代码你使用单选按钮而不是复选框的原因是什么?是的,它是选择器过滤器的一部分。@Juergen我已经回答了,但是如果你不说你想在
中发生什么,做点什么
我们就不能再说了这是一个好主意,但它不会起作用,因为他
[name=value++(i+1)+]
看起来像
[name=value\u 1]
,他的例子是
[name=value\u one]
正确的@CarstenLøvboAndersen,但在html中,我们可以像value一样更改名称,这是个好主意