簡體   English   中英

切換HTML中優先級排序表的組合框的值? 如何修復我的代碼?

[英]Switch values of comboboxes for priority sorting table in HTML? How do I fix my code?

我想制作一個表格,其中標題的優先級放在組合框中。 我想要它,以便當我更改組合框的優先級時,保存該編號的另一個組合框將與更改后的組合框切換,然后刷新要重新排序的頁面。 我試圖做這樣的代碼:

<script>
function switchpriority(priorityid){
    var t = document.getElementById("typepriority");
    var n = document.getElementById("numpriority");
    var d = document.getElementById("datepriority");
    if(priorityid=="typepriority"){
        for(i = 1; i < 4; i++){
            if(n.value!=i && d.value!=i){
                if(t.value==n.value){
                    n.value = i;
                }else if(t.value==d.value){
                    d.value = i;
                }
            }
            break;
        }
    }else if(priorityid=="numpriority"){
        for(i = 1; i < 4; i++){
            if(t.value!=i && d.value!=i){
                if(n.value==t.value){
                    t.value = i;
                }else if(n.value==d.value){
                    d.value = i;
                }
                break;
            }
        }
    }else if(priorityid=="datepriority"){
        for(i = 1; i < 4; i++){
            if(t.value!=i && n.value!=i){
                if(d.value==t.value){
                    t.value = i;
                }else if(d.value==n.value){
                    n.value = i;
                }
                break;
            }
        }
    }
    self.location = 'searchorder.php?typepriority='+t.value+'&numpriority='+n.value+'&datepriority='+d.value;
}
</script>
<table>
<tr>
<td>
Type
<select name="typepriority" id="typepriority" onchange="switchpriority('typepriority')">
<?php
for($i=1;$i<4;$i++){
    if(isset($_GET['typepriority'])){
        if($_GET['typepriority']==$i){
            echo '<option selected="selected">'.$i.'</option>';
            continue;
        }
    }
    echo '<option>'.$i.'</option>';
}
?>
</select>
<label>&uarr;</label>
</td>
<td>
No.
<select name="numpriority" id="numpriority" onchange="switchpriority('numpriority')">
<?php
for($i=1;$i<4;$i++){
    if(isset($_GET['numpriority'])){
        if($_GET['numpriority']==$i){
            echo '<option selected="selected">'.$i.'</option>';
            continue;
        }
    }
    echo '<option>'.$i.'</option>';
}
?>
</select>
&uarr;
</td>
<td>
Date
<select name="datepriority" id="datepriority" onchange="switchpriority('datepriority')">
<?php
for($i=1;$i<4;$i++){
    if(isset($_GET['datepriority'])){
        if($_GET['datepriority']==$i){
            echo '<option selected="selected">'.$i.'</option>';
            continue;
        }
    }
    echo '<option>'.$i.'</option>';
}
?>
</select>
</td>
</tr>
</table>

到目前為止,它仍然有效,但是以某種方式,當我連續更改組合框的值時,它不起作用。 我真的不知道我的代碼有什么問題... Tch! 還是有更好的方法來做到這一點?

我不確定這是否可以解決您的問題,因為我尚未測試過,但是我注意到您的第一個break; 聲明與其他兩個聲明位於不同的位置:

// 1st for loop
for (i = 1; i < 4; i++) {
    if (...) {
        // ...
    }
    break;
}

// 2nd and 3rd for loops
for (i = 1; i < 4; i++) {
    if (...) {
        // ...
        break;
    }
}

對於第一個for循環,break語句將在第一個循環上立即執行,從而使其始終在第一個迭代中退出循環。 對於第二個和第三個循環,只有在滿足if語句的條件並輸入該控制塊時,才執行break語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM