簡體   English   中英

如何停止對選擇列表的更改影響第二選擇

[英]How to stop changes to a select list from affecting a second select

我在填充選擇列表(所需操作)的功能上也遇到了問題,該功能還更改了第二個選擇列表(不需要的操作)。

它需要一個相當長的解釋,所以我包括了用於說明問題的頁面代碼。

這兩個列表是相同的。 根據是否選擇男人或女人的自行車來填充列表。 如果每個人都選擇一種性別,那么一切都會很好地工作,當選擇兩種相同性別的人時,就會出現問題。 然后,另一個選擇列表的內容將被清空。 (???)

任何幫助,將不勝感激。

抱歉,我有一段時間沒來了。 我已將代碼簡化為僅一個令人討厭的函數,並將代碼放入jsfiddle中,這是鏈接:

http://jsfiddle.net/AlexGM/p5ctb1td/

這是一個非常舊的網站,我正試圖維護。

謝謝。

<body>
<script language="javascript">
// Dynamically Generated Content
    BikeOptions = new Array();
FemaleOpt1 = new Option('12" Model', '7')
BikeOptions[7] = new Array()
BikeOptions[7][1] = new Array()
BikeOptions[7][1][0] = 'LRD12ST'
BikeOptions[7][1][1] = '$399.80 + s/h'
FemaleOpt2 = new Option('15" Model', '8')
BikeOptions[8] = new Array()
BikeOptions[8][1] = new Array()
BikeOptions[8][1][0] = 'LRD15ST'
BikeOptions[8][1][1] = '$399.80 + s/h'
FemaleOpt3 = new Option('17" Model', '9')
BikeOptions[9] = new Array()
BikeOptions[9][1] = new Array()
BikeOptions[9][1][0] = 'LRD17'
BikeOptions[9][1][1] = '$399.80 + s/h'
MaleOpt1 = new Option('14" Model', '2')
BikeOptions[2] = new Array()
BikeOptions[2][1] = new Array()
BikeOptions[2][1][0] = 'LRD14'
BikeOptions[2][1][1] = '$399.80 + s/h'
MaleOpt2 = new Option('17" Model', '3')
BikeOptions[3] = new Array()
BikeOptions[3][1] = new Array()
BikeOptions[3][1][0] = 'LRD17'
BikeOptions[3][1][1] = '$399.80 + s/h'
MaleOpt3 = new Option('19.5" Model', '4')
BikeOptions[4] = new Array()
BikeOptions[4][1] = new Array()
BikeOptions[4][1][0] = 'LRD19'
BikeOptions[4][1][1] = '$399.80 + s/h'
MaleOpt4 = new Option('22" Model', '5')
BikeOptions[5] = new Array()
BikeOptions[5][1] = new Array()
BikeOptions[5][1][0] = 'LRD22'
BikeOptions[5][1][1] = '$399.80 + s/h'
MaleCTR = 5
FemaleCTR = 4
BothCTR = 1

// End Dynamically Generated Content

function updateSizes(model, count) {
    newOpt = new Option("Select Your Bike Size", "")
    if (count == 1) {
        SelectList = "ModelHeight";
    } else {
        SelectList = "FrModelHeight";
    }
    document.getElementById(SelectList).length = 0; // clear the list
    document.getElementById(SelectList).options[0] = newOpt;
    if ( model == 'M' ) {
        for ( x = 1; x < MaleCTR; x++ ) {
            mOpt = "MaleOpt"+x;
            document.getElementById(SelectList).options[x] = window[mOpt];
        }
    } else if ( model == 'F' ) {
        for ( x = 1; x < FemaleCTR; x++ ) {
            fOpt = "FemaleOpt"+x;
            document.getElementById(SelectList).options[x] = window[fOpt];
        }
    } 
    document.getElementById(SelectList).selectedIndex = 0;
}

</script>

  <p class="style1">TEST PAGE</p>
  <form name="myForm" action="" method="post" onsubmit="">

  <table width="475" border="0" cellpadding="0" cellspacing="0">

    <tr>
      <td>1</td>
      <td><p>FIRST BIKE: Click if you want a Men's or Women's model.</p></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>
        <input name="ModelSex" type="radio" value="M" onclick="updateSizes('M', 1)" />Men's<input name="ModelSex" type="radio" value="F" onclick="updateSizes('F', 1)" />Women's
      </td>
    </tr>
    <tr>
      <td>2</td>
      <td>Choose the bike size that's right for you.</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>
        <select id="ModelHeight" name="ModelHeight">
          <option value="">Select Your Bike Size</option>
          <option value="">-- Please select the model type first --</option>
        </select>
      </td>
        <input type="hidden" id="PaymentPlan" name="PaymentPlan" value="" />
    </tr>

      <td>3 </td>
      <td><p>SECOND BIKE: Choose a Men's or Women's model.</p></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>
        <input name="FrModelSex" type="radio" value="M" onclick="updateSizes('M', 2)" />
        Men's
        <input name="FrModelSex" type="radio" value="F" onclick="updateSizes('F', 2)" />
        Women's
      </td>
    </tr>
    <tr>
      <td>4</td>
      <td>Choose the size for the 2nd bike.</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>
        <select id="FrModelHeight" name="FrModelHeight">
          <option value="">Select Your Bike Size</option>
          <option value="">-- Please select the model type first --</option>
        </select>
      </td>
      <input type="hidden" id="FrPaymentPlan" name="FrPaymentPlan" value="" />
    </tr>    

    <tr>
      <td>5</td>
      <td>Here you would submit the form</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>Thank you.</td>
    </tr>
  </table>
  </form>
</body>

問題出在這里:

document.getElementById(SelectList).options[x] = window[mOpt];
...
document.getElementById(SelectList).options[x] = window[fOpt];

這實際上是將選項節點從一個選擇移動到另一個。 您只需要克隆原始節點:

document.getElementById(SelectList).options[x] = window[mOpt].cloneNode(true);
...
document.getElementById(SelectList).options[x] = window[fOpt].cloneNode(true);

在這里查看更新的jsfiddle:

http://jsfiddle.net/p5ctb1td/3/

暫無
暫無

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

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