我试图在不使用外部变量的情况下交换两个数字,使用div
作为输出,但是它会为我的一个数字添加零。
例如,如果我的输入为1 2
,则会打印2 10
:
function swap() {
num2.value = num1.value + (num1.value = num2.value) - num2.value;
divID.innerHTML = num1.value + " " + num2.value;
}
<input id="num1"/>
<input id="num2"/>
<button onclick="swap()">click</button>
<div id="divID">output here</div>
答案 0 :(得分:1)
这里有一个交换示例,没有其他变量而不是两个。这可以通过临时数组,赋值和第0个元素的快速访问来实现。
a = [b, b = a][0];
或占地面积较小
a = [b][b = a, 0];
工作示例:
var a = 5, b = 42;
a = [b, b = a][0];
document.write('a: ' + a + '<br>');
document.write('b: ' + b);
你遇到的问题是错误的公式(以及某种类型不匹配)。
function swap() {
num2.value = +num1.value - +num2.value + (num1.value = +num2.value);
divID.innerHTML = num1.value + " " + num2.value;
}
<input id="num1"/>
<input id="num2"/>
<button onclick="swap()">click</button>
<div id="divID">output here</div>
答案 1 :(得分:1)
Xor swap
a=5; b=4;
a^=b; // now a is 1, b is 4
b^=a; // now a is 1, b is 5
a^=b; // now a is 4, b is 5
它们通过对两个变量的每个位的按位运算进行交换。请注意,这仅适用于两个数字的相同位长。
没有使用额外的内存。
答案 2 :(得分:1)
另外几种方法:
var a = 5, b = 4;
a = a + b; // a now becomes 9
b = a - b; // b becomes 5
a = a - b; // a becomes 4
var a = 5, b = 4;
a = a ^ b; // a now becomes 1
b = a ^ b; // b becomes 5
a = a ^ b; // a becomes 4
var a = 5, b = 4;
a = a * b; // a now becomes 20
b = a / b; // b becomes 5
a = a / b; // a becomes 4
答案 3 :(得分:0)
您可以将临时变量用作存储:
function swap(){
var temp = num2.value;
num2.value = num1.value;
num1.value = temp;
divID.innerHTML=num1.value+" "+num2.value;
}
答案 4 :(得分:0)
您可以将div的innerHTML用作临时存储:
function swap() {
divID.innerHTML = num1.value;
num1.value = num2.value;
num2.value = divID.innerHTML;
divID.innerHTML = num1.value + " " + num2.value;
}
<input id="num1"/ value="1">
<input id="num2"/ value="2">
<button onclick="swap()">swap</button>
<div id="divID">output here</div>