0

我想当我从组合框中选择一个值时,它会显示特殊表,当我选择另一个值时,它会显示另一个表,但我的代码无法正常工作。

<script> 
function bank_state() {
     if (document.profile.nb_shetab_bank.value == 'SAMAN') {
         document.getElementById('auth_method_pr1').style.display = 'inline';
         document.getElementById('auth_method_pr2').style.display = 'none';
     } else if (document.profile.nb_shetab_bank.value == 'MELAT') {
         document.getElementById('auth_method_pr1').style.display = 'none';
         document.getElementById('auth_method_pr2').style.display = 'inline';
     }
}
</script>


<select name="nb_shetab_bank" size="1" onchange="bank_state();" >
 <option value="SAMAN" selected>Saman</option>
 <option value="MELAT" >Mellat</option>
</select>
<table  border="1" cellpadding="0" cellspacing="0" id="auth_method_pr1"    
style="display:none;">
  <tr><td>salam</td></tr>
 </table>
 <table width="100%" border="1" cellpadding="0" cellspacing="0" id="auth_method_pr2"
      style="display:none;">   
  style="display:none;">
  <tr><td>salam salam</td></tr>
  </table> 
4

1 回答 1

0

将显示更改<table>为“内联”不是一个好主意,并且确实会导致奇怪的行为。更好地更改为空字符串,它将采用默认值:

document.getElementById('auth_method_pr1').style.display = "";

也就是说,您的代码可以写得有些不同,以便更具可读性和更好。首先,将下拉对象发送到函数:

<select name="nb_shetab_bank" size="1" onchange="bank_state(this);" >

现在该函数看起来像这样:

function bank_state(sender) {
    var table1 = document.getElementById('auth_method_pr1');
    var table2 = document.getElementById('auth_method_pr2');
    switch (sender.value) {
        case 'SAMAN':
            table1.style.display = '';
            table2.style.display = 'none';
            break;
        case 'MELAT':
            table2.style.display = '';
            table1.style.display = 'none';
            break;
    }
}
于 2013-06-16T10:02:36.650 回答