Javascript中数字计数器的动态输入

Javascript中数字计数器的动态输入,javascript,html,Javascript,Html,我试图创建两个数字计数器,可以实时递增和递减另一个计数器。我也不太懂Javascript <input type="number" step="1" value="10" name="counter1" id="counter1"> <input type="number" step="1" value="10" name="counter2" id="counter2"> 两个主要问题: 将输入值赋给变量不会创建引用,而是创建一个副本。这意味着它不会修改存储在输

我试图创建两个数字计数器,可以实时递增和递减另一个计数器。我也不太懂Javascript

 <input type="number" step="1" value="10" name="counter1" id="counter1">

 <input type="number" step="1" value="10" name="counter2" id="counter2">
两个主要问题:

  • 将输入值赋给变量不会创建引用,而是创建一个副本。这意味着它不会修改存储在输入中的数字,只是修改您创建的复制变量

  • 您不应该使用
    单击事件。您应该使用,因为它将在值更改时激发

  • 最后,您可以跟踪每个输入的上一个值,并将其与新值进行比较,以确定它是增加了还是减少了。更简单的是,您可以计算这些值之间的差异,并从其他输入值中减去该差异

    var counter1=document.getElementById('counter1');
    var counter2=document.getElementById('counter2');
    var prevCounter1=counter1.0值;
    var prevCounter2=counter2.0值;
    计数器1.addEventListener('change',function(){
    var value1=parseInt(counter1.value);
    var value2=parseInt(counter2.value);
    var delta=值1-prevCounter1;
    计数器2.value=值2-增量;
    prevCounter1=值1;
    });
    计数器2.addEventListener('change',function()){
    var value1=parseInt(counter1.value);
    var value2=parseInt(counter2.value);
    var delta=值2-prevCounter2;
    计数器1.value=值1-增量;
    prevCounter2=值2;
    });
    
    
    
    两个主要问题:

  • 将输入值赋给变量不会创建引用,而是创建一个副本。这意味着它不会修改存储在输入中的数字,只是修改您创建的复制变量

  • 您不应该使用
    单击事件。您应该使用,因为它将在值更改时激发

  • 最后,您可以跟踪每个输入的上一个值,并将其与新值进行比较,以确定它是增加了还是减少了。更简单的是,您可以计算这些值之间的差异,并从其他输入值中减去该差异

    var counter1=document.getElementById('counter1');
    var counter2=document.getElementById('counter2');
    var prevCounter1=counter1.0值;
    var prevCounter2=counter2.0值;
    计数器1.addEventListener('change',function(){
    var value1=parseInt(counter1.value);
    var value2=parseInt(counter2.value);
    var delta=值1-prevCounter1;
    计数器2.value=值2-增量;
    prevCounter1=值1;
    });
    计数器2.addEventListener('change',function()){
    var value1=parseInt(counter1.value);
    var value2=parseInt(counter2.value);
    var delta=值2-prevCounter2;
    计数器1.value=值1-增量;
    prevCounter2=值2;
    });
    
    更改变量后,必须在DOM中设置它,例如通过
    文档。getElementById('counter1')。value=counter1
    要获取输入的更改,请单击
    事件,但我更喜欢收听
    change
    事件


    更新我必须想出一个稍微优雅一点的解决方案。当一个值增加而另一个值减少时,两个值的总和将相同。因此,最初将这些值相加,然后通过从总和中减去第一个(更改的)值来计算第二个值更容易:

    var input1=document.getElementById('counter1');
    var input2=document.getElementById('counter2');
    var sum=parseInt(input2.value)+parseInt(input1.value);
    函数onChange(e){
    如果(此===输入1)
    input2.value=sum-parseInt(input1.value);
    其他的
    input1.value=sum-parseInt(input2.value);
    }
    input1.onchange=onchange;
    input2.onchange=onchange
    
    更改变量后,必须在DOM中设置它,例如通过
    文档。getElementById('counter1')。value=counter1
    要获取输入的更改,请单击
    事件,但我更喜欢收听
    change
    事件


    更新我必须想出一个稍微优雅一点的解决方案。当一个值增加而另一个值减少时,两个值的总和将相同。因此,最初将这些值相加,然后通过从总和中减去第一个(更改的)值来计算第二个值更容易:

    var input1=document.getElementById('counter1');
    var input2=document.getElementById('counter2');
    var sum=parseInt(input2.value)+parseInt(input1.value);
    函数onChange(e){
    如果(此===输入1)
    input2.value=sum-parseInt(input1.value);
    其他的
    input1.value=sum-parseInt(input2.value);
    }
    input1.onchange=onchange;
    input2.onchange=onchange
    
    
    
    简单地说

    console.log(counter1);
    10
    
    这里您可以理解的是,您正在将
    document.getElementById('counter1').value
    值分配给
    counter1
    ,而不是元素

    正确使用

    您应该使用以下内容:

    counter1 = document.getElementById('counter1');
    
    要更新它:

    counter1.value++;
    
    极简主义代码:

    counter1 = document.getElementById('counter1');
    counter2 = document.getElementById('counter2');
    
    counter2.onclick = function() { counter2.value++; counter1.value--; };
    counter1.onclick = function() { counter1.value++; counter2.value--; };
    
    简单地说

    console.log(counter1);
    10
    
    这里您可以理解的是,您正在将
    document.getElementById('counter1').value
    值分配给
    counter1
    ,而不是元素

    正确使用

    您应该使用以下内容:

    counter1 = document.getElementById('counter1');
    
    要更新它:

    counter1.value++;
    
    极简主义代码:

    counter1 = document.getElementById('counter1');
    counter2 = document.getElementById('counter2');
    
    counter2.onclick = function() { counter2.value++; counter1.value--; };
    counter1.onclick = function() { counter1.value++; counter2.value--; };
    

    这是一个工作小提琴,当你改变一个输入时,它会更新另一个输入

    代码:

    Html:

     <input type="number" step="1" value="10" name="counter1" id="counter1">
     <input type="number" step="1" value="10" name="counter2" id="counter2">
    

    这是一个工作小提琴,当你改变一个输入时,它会更新另一个输入

    代码:

    Html:

     <input type="number" step="1" value="10" name="counter1" id="counter1">
     <input type="number" step="1" value="10" name="counter2" id="counter2">
    
    这应该起作用:
    var ConnectedCounter=(函数ConnectedCounter(选择器){
    var-con