如何使用循环根据另一个输入为输入分配值?

时间:2019-01-31 04:08:42

标签: javascript jquery

如果“ master”中的值是偶数,例如8,我希望输入“ bla”将每个接收2,如果数字是奇数,例如7,则“ bla”中的值将是:2、2 ,2、1、0等。我正在尝试使用此方法,但是结果不确定

$(document).ready(function(){
var x = $("#master").val();
var z = 0 ;
var i ;
for (i = 0; i <= x ; i++) {
z += x[i];
 }

$("#master").change(function(){
   $('.bla').val( z ) ;        
 });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="master" value="8">

<input class="bla" value="">
<input class="bla" value="">
<input class="bla" value="">
<input class="bla" value="">

3 个答案:

答案 0 :(得分:1)

要得到你想要的,你需要比你现在有更多的逻辑结果。至少您的问题的措辞方式。第一个问题是您的初始z值更新仅更新一次,因此当您第二次更新master时,您将无法获得期望的值。

接下来,你想,从我的理解,从根本上打破做成2号是一个1和0,所以要做到这一点,你需要更多的方式逻辑,以检查比目前你在做什么的值。在下面,如果值> 1,则需要附加一个2。否则,请使用x的值。然后,我们将x减去附加到bla的值。

$(document).ready(function(){
    updateBla();
    $("#master").change(function(){
        updateBla();
    });
    
    function updateBla(){
        let x = $('#master').val();
        let blahs = document.getElementsByClassName('bla');
        for(let i = 0; i < blahs.length; i++){
            let val = x > 1 ? 2 : x;
            blahs[i].value = val;
            x = x - val;
        }
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="master" value="8">

<input class="bla" value="">
<input class="bla" value="">
<input class="bla" value="">
<input class="bla" value="">

答案 1 :(得分:0)

这是因为您正在尝试索引一个整数,正如@Sachintha Sampath指出的那样,它实际上没有一个索引,该索引的值不是第0个索引。试试这个:

$(document).ready(function(){
    $("#master").change(function(){
        var x = $("#master").val();
        var z = [];
        for (; x > 0; x -= 2) {
            z.push(x >= 2 ? 2 : 1)
        }

        $('.bla').each(function(index) {
            $(this).val(z[index])
        })
     });
});

注意:此代码最多只能显示您所用格式的数字,直到8位为止,在这种情况下,没有足够的输入来继续显示其余数字。

答案 2 :(得分:-1)

    var z="";
    var x=9;
    var c=0;
    c=Math.floor(x/2);
    if(x%2==0){
      for (i = 0; i <c ; i++) {
        z +=" 2";
      }
    }else {
       for (i = 0; i <c ; i++) { 
           z +=" 2";
          }
     z+=" 1   0"
    }
   console.log(z);