В моем HTML файле у меня есть select tag, в котором, когда я выбираю первый, другой select tag должен заполняться некоторыми опциями, а при выборе другой опции, другие опции заполняются в другом select tag.

Я сделал это в моем HTML:

        <script type="text/javascript">
        function fillWirelessChannel(){
            var index;
            var selectTag= document.getElementById('wirelessChannel');                       selectTag.options.length = 0; // wireless should 
            selectTag.options.length = 0; 
            var auto = document.createElement("option");
            auto.value= 'auto';
            auto.innerHTML = 'auto';
            if (document.getElementById('country').selected="1") {
                  for(index=4920; index<=5825; index+=5){
                      var opt = document.createElement("option");
                      opt.value= index;
                      opt.innerHTML = index;     
                      selectTag.appendChild(opt);         
                  }
              } else if(document.getElementById('country').selected="2"){               
                  for(index=4920; index<=6075; index+=5){
                      var opt = document.createElement("option");
                      opt.value= index;
                      opt.innerHTML = index;       
                      selectTag.appendChild(opt);           
                  }
              }
        }
    </script>

WirelessChanne - это тег выбора, который необходимо заполнить. Тег страны находится в операторе if, а выбранный - наше условие. Теперь, когда я запускаю код, второй if не работает (он не отображается до 6075 во втором операторе), а также не добавляет опцию auto к тегу select. (Я хочу, чтобы auto отображался в первом параметре wirelessChannel без условий, я имею ввиду при первом указателе должно отображаться авто) Где я делаю не так?

1
me_the_seven 28 Май 2017 в 10:34

2 ответа

Лучший ответ

В операторе If используйте == вместо =. Чтобы добавить опцию auto в select, добавьте ее перед циклом for. Вы создали опцию, но забыли добавить опцию. Используйте selectTag.appendChild(auto); перед циклом for

 fillWirelessChannel();

function fillWirelessChannel(){
            var index;
            var selectTag= document.getElementById('wirelessChannel');                       selectTag.options.length = 0; /* wireless should */
            selectTag.options.length = 0; 
            var auto = document.createElement("option");
            auto.value= 'auto';
            auto.innerHTML = 'auto';
            selectTag.appendChild(auto);     
            console.log(document.getElementById('country').value);
            
            if (document.getElementById('country').value=="1") {
                  for(index=4920; index<=5825; index+=5){
                      var opt = document.createElement("option");
                      opt.value= index;
                      opt.innerHTML = index;     
                      selectTag.appendChild(opt);         
                  }
              } else if(document.getElementById('country').value=="2"){               
                  for(index=4920; index<=6075; index+=5){
                      var opt = document.createElement("option");
                      opt.value= index;
                      opt.innerHTML = index;       
                      selectTag.appendChild(opt);           
                  }
              }
        }
<select id="wirelessChannel">
</select>

<select id="country" onchange="fillWirelessChannel()">
 <option value="1">1</option>
 <option value="2">2</option>
</select>
0
XYZ 28 Май 2017 в 07:44

Чтобы проверить, равно ли значение чему-либо, вам нужно использовать двойной знак равенства - чтобы установить значение чего-либо, вы должны использовать один знак равенства.

function fillWirelessChannel(){
    var index;

    var selectTag= document.getElementById('wirelessChannel');
        selectTag.options.length = 0; 

    var auto = document.createElement('option');
        auto.value= 'auto';
        auto.text = 'auto';

    selectTag.appendChild( auto );

    var oCountry=document.getElementById('country');

    if ( oCountry.value==1 ) {
        for( index=4920; index <= 5825; index+=5 ){
            var opt = document.createElement('option');
                opt.value= index;
                opt.text = index;

            selectTag.appendChild( opt );         
        }
    } else if( oCountry.value=='2' ){               
        for( index=4920; index <= 6075; index+=5 ){
            var opt = document.createElement('option');
                opt.value= index;
                opt.text = index;

            selectTag.appendChild( opt );           
        }
    }
}
1
RamRaider 28 Май 2017 в 08:21