[英]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>↑</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>
↑
</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.