Javascript中数字计数器的动态输入
我试图创建两个数字计数器,可以实时递增和递减另一个计数器。我也不太懂JavascriptJavascript中数字计数器的动态输入,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"> 两个主要问题: 将输入值赋给变量不会创建引用,而是创建一个副本。这意味着它不会修改存储在输
<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