Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试对自定义顺序列表使用Select标记和Onchange_Javascript_Php_Onchange - Fatal编程技术网

Javascript 尝试对自定义顺序列表使用Select标记和Onchange

Javascript 尝试对自定义顺序列表使用Select标记和Onchange,javascript,php,onchange,Javascript,Php,Onchange,我对Javascript和函数非常陌生……我已经尽力做到这一点,但我已经走到了死胡同。我试图做的是允许用户使用下拉框手动更改数据集的排序顺序。例如,使用以下数据: Name SortOrder Bob 1 John 2 Mary 3 Susan 4 Frank 5 Allison 6 Katie 7 Scott 8 假设用户希望将John显示在列表的顶部,将Susan显示为列表的第二个。当用户将John的排序器更改为1时,我希望Bob的排序器更改为2。

我对Javascript和函数非常陌生……我已经尽力做到这一点,但我已经走到了死胡同。我试图做的是允许用户使用下拉框手动更改数据集的排序顺序。例如,使用以下数据:

Name    SortOrder
Bob     1
John    2
Mary    3
Susan   4
Frank   5
Allison 6
Katie   7
Scott   8
假设用户希望将John显示在列表的顶部,将Susan显示为列表的第二个。当用户将John的排序器更改为1时,我希望Bob的排序器更改为2。当苏珊的改为2时,我希望鲍勃的改为3,玛丽的改为4。我对这一点非常了解,但一旦做了一两个改变,列表就不合作了。以下是我的功能:

<script>
function changeField(newval, oldval, maxfield, fieldid) {
var val = newval.value;
var oldval = Number(oldval);
var maxfield = Number(maxfield);
for (var i = 1; i <= maxfield; i++) {
    var curval = Number(document.getElementById("sortorder" + i).value);
    if (val < oldval) {
        if (curval >= val && curval < oldval && fieldid != "sortorder" + i) {
            document.getElementById("sortorder" + i).value = curval + 1;
            }
        }
    if (val > oldval) {
        if (curval <= val && curval > oldval && fieldid != "sortorder" + i) {
            document.getElementById("sortorder" + i).value = curval - 1;
            }
        }
    }

for (var n = 1; n <= maxfield; n++) {
    var newfieldid= "sortorder" + document.getElementById("sortorder" + n).value;
    document.getElementById("sortorder" + n).id = newfieldid;
    }
}
</script>

函数更改字段(newval、oldval、maxfield、fieldid){
var val=newval.value;
var oldval=编号(oldval);
var maxfield=编号(maxfield);
对于(变量i=1;i=val&&curvaloldval){
if(曲线oldval&&fieldid!=“排序器”+i){
getElementById(“sortorder”+i).value=curval-1;
}
}
}

对于(var n=1;n一个错误是如何获得select的值。下面是正确的方法。

我更正了第一次出现的获取select值的错误。

函数更改字段(newval、oldval、maxfield、fieldid){
var val=newval.value;
var oldval=编号(oldval);
var maxfield=编号(maxfield);
对于(变量i=1;i=val&&curvaloldval){
if(曲线oldval&&fieldid!=“排序器”+i){
getElementById(“sortorder”+i).value=curval-1;
}
}
}
对于(var n=1;n
echo '<select id="sortorder' . $crow['catSortOrder'] . '" onchange="changeField(this, ' . $crow['catSortOrder'] . ', ' . $numcat . ', \'sortorder' . $crow['catSortOrder'] . '\');">';
for ($v=1; $v<=$numcat; $v++) {
echo '<option id="optid" value=' . $v . ($v == $crow['catSortOrder'] ? " selected = \"yes\"" : "") . '>' . $v . '</option>';
}
echo '</select>';
function changeField(newval, oldval, maxfield, fieldid) {
    var val = newval.value;
    var oldval = Number(oldval);
    var maxfield = Number(maxfield);
    for (var i = 1; i <= maxfield; i++) {
        // var curval = Number(document.getElementById("sortorder" + i).value);
        var e = document.getElementById("sortorder" + i);
        var curval = e.options[e.selectedIndex].value;
        if (val < oldval) {
            if (curval >= val && curval < oldval && fieldid != "sortorder" + i) {
                document.getElementById("sortorder" + i).value = curval + 1;
            }
        }
        if (val > oldval) {
            if (curval <= val && curval > oldval && fieldid != "sortorder" + i) {
                document.getElementById("sortorder" + i).value = curval - 1;
            }
        }
    }

    for (var n = 1; n <= maxfield; n++) {
        var newfieldid = "sortorder" + document.getElementById("sortorder" + n).value;
        document.getElementById("sortorder" + n).id = newfieldid;
    }
}