交换两个没有外部变量的数字并输出到div

时间:2015-11-18 22:12:34

标签: javascript html

我试图在不使用外部变量的情况下交换两个数字,使用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>

5 个答案:

答案 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>