我尝试交换两个值。当我更改一个值时,具有相同值的另一个值应更改为第一个值,但第二个值未定义。例如,第一个值是2,第二个值是6,如果我将2更改为6,6应该是2,但在这种情况下,6更改为未定义。 这是我的代码
var x = document.getElementById('titleorder['+indexarray+']').value;
var y = this.value;
if (document.getElementById('titleorder['+indexarray+']').onkeyup)
{
var tmp = x;
x = y;
y = tmp;
document.getElementById('titleorder['+indexarray+']').value = x;
document.getElementById('titleorder(this.value)').value = y;
}
<input type="text" name="titleorder" id="titleorder[<?PHP echo $row->ORDER; ?>]" value="<?PHP echo $row->ORDER; ?>" size="5" onkeyup="sync(this.value)"/>
我的代码出了什么问题。我希望有人能帮我找出问题所在。提前谢谢。
答案 0 :(得分:4)
答案 1 :(得分:2)
document.getElementById('titleorder(this.value)').value = y;
在这一行中,this.value
是文字文本。你可能想写
this.value = y;
答案 2 :(得分:1)
第二个titleorder
索引&amp;赋值(来自y
)似乎使用括号,它应该使用方括号。
x
和y
交换似乎没有问题,它是围绕它的代码。
此时还不清楚this.value
会是什么(如果有的话),并且你把它写成文字 - 而不是使用它的价值。
测试if
是否已分配的onkeyup
语句不清楚..它不是事件处理程序,但它看起来应该是一个。我无法看到你的代码中有任何事件处理程序,看起来很时髦。
答案 3 :(得分:1)
这一行有很多问题:
document.getElementById('titleorder(this.value)').value = y;
首先,'this.value'用作字符串文字而不是javascript变量值。其次,您使用括号作为数组索引器。
这应该是:
document.getElementById('titleorder[' + this.value + ']').value = y;
其他人也指出'this.value'在第二次调用中的含义不同,因为你已经将'tmp'中的值赋给了'y'。让我们整理一下:
// expects an element to be passed in.
function sync(control)
{
var elementX = document.getElementById('titleorder['+indexarray+']').value;
var elementY = control;
var x = elementX.value
var y = elementY.value;
if (elementX.onkeyup)
{
var tmp = x;
x = y;
y = tmp;
elementX.value = x;
elementY.value = y;
}
} // end function sync
<input type="text" name="titleorder" id="titleorder[<?PHP echo $row->ORDER; ?>]" value="<?PHP echo $row->ORDER; ?>" size="5" onkeyup="sync(this)"/>
答案 4 :(得分:-2)
理解它的简单例子
您只需要一个临时变量。
var b = list[y];
list[y] = list[x];
list[x] = b;
您也可以点这个链接: