我正在尝试创建一个JS函数,该函数允许管理员根据一些(当前不相关)变量来修改网站用户的排名。

为此,我创建了一个显示所有用户的函数,并在单击其中一个名称时显示两个按钮。这些按钮可用于将用户上移或下移一个等级。当然,移动用户必须切换已经在排名中的位置:为此,我(尝试)使用经典的c = a, a = b, b = c方法。

只要您先提升用户,它就很好用。如果要从向下移动用户开始,则不会执行任何操作。

这是小提琴:http://jsfiddle.net/benedekadam/caqcw35h/

请记住,我必须对其进行修改:我正在使用一个新创建的较小数组来存储用户名,并且我删除了负责禁用按钮的代码段(如果是第一个或最后一个)名称-因此您只能将姓氏上移或将名字下移。除了这两个更改,它与我当前在网站中使用的相同。

我很确定有一个非常简单的错误会导致该错误,但是我花了最后两个小时的大部分时间来尝试找到它-但没有成功。

你能帮助我吗?

最佳答案

您错过的是您没有解析'tempszam2'var,它是一个整数字符串值。当您执行(tempszam2 + 1)时,如果tempszam2 =“ 1”,则tempszam2 + 1将为您提供“ 11”而不是2。因此,您需要在将'tempszam2'变量(为整数的字符串)之前解析为1 。

function LeMozgat(szam3) {
    var tempszam2 = szam3;
    document.getElementById("tempName " + tempszam2).style.border = "none";
    document.getElementById("tempName " + (parseInt(tempszam2) + 1)).style.border = "1px solid";
    var cserename2 = document.getElementById("tempName " + tempszam2).value;
    document.getElementById("tempName " + tempszam2).value =  document.getElementById("tempName " + (parseInt(tempszam2) + 1)).value;

    document.getElementById("tempName " + (parseInt(tempszam2) + 1)).value = cserename2;

    szam = parseInt(tempszam2) + 1;

}

关于javascript - 交换textinput值时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25183837/

10-12 12:20