Javascript 尝试对自定义顺序列表使用Select标记和Onchange
我对Javascript和函数非常陌生……我已经尽力做到这一点,但我已经走到了死胡同。我试图做的是允许用户使用下拉框手动更改数据集的排序顺序。例如,使用以下数据: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。
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;
}
}