Показать сообщение отдельно
  #1 (permalink)  
Старый 24.04.2011, 12:49
Новичок на форуме
Отправить личное сообщение для alex_2017 Посмотреть профиль Найти все сообщения от alex_2017
 
Регистрация: 24.04.2011
Сообщений: 2

Удаление совпадающих значений
Добрый день.
Пишу скрипт, который при загрузке страницы удаляет все значения из тега select, которые встречаются в таблице.
<html> 
<body onload="gen_list()"> 
        <fieldset> 
            <legend>1111</legend> 
            <table id="List"> 
            <tbody> 
  
            <tr id="accomm1" value="1"><td>1</td></tr> 
            <tr id="accomm2" value="2"><td>2</td></tr> 
            <tr id="accomm5" value="5"><td>5</td></tr> 
            <tr id="accomm8" value="8"><td>8</td></tr> 
            <tr id="accomm33" value="33"><td>33</td></tr> 
            <tr id="accomm11" value="11"><td>11</td></tr> 
            <tr id="accomm6" value="16"><td>6</td></tr> 
  
            </tbody> 
            </table> 
        </fieldset> 
  
  
        <select id="select"> 
            <option id="id33" value="33">33</option> 
            <option id="id1" value="1">1</option> 
            <option id="id2" value="2">2</option> 
            <option id="id8" value="8">8</option> 
            <option id="id11" value="11">11</option> 
            <option id="id15" value="15">15</option> 
        </select> 
</body> 
</html>

<script> 
  
function gen_list() 
{ 
  
    var idArray = new Array; 
  
    var table = document.getElementById('List'); 
    var tableRowCount = table.rows.length; 
      
    for(var i = 0; tableRowCount > i; i++) 
    { 
  
        var tableRow = table.rows[i]; 
        var tableRowValue = tableRow.getAttribute('value'); 
        idArray[i] = tableRowValue; 
      
    } 
      
      
  
    var select = document.getElementById('select'); 
    var selectOptionCount = select.options.length; 
  
    for(var i = 0; selectOptionCount > i; i++) 
    { 
        var selectOption = select.options[i]; 
        var selectOptionValue = selectOption.getAttribute('value'); 
      
      
        for(var j = 0; idArray.length > j; j++) 
        { 
            if(selectOptionValue == idArray[j]) 
            { 
                alert(selectOptionValue); 
                //select.removeChild(selectOption); 
            } 
        } 
          
    } 
  
} 
  
</script>


В общем скрипт находит все совпадения, но если раскомментировать строку select.removeChild(selectOption), которая и отвечает за удаление, то будут удалены лишь некоторые совпадения.

В данном случае не будут удалены 1 и 8.

Прошу вашей помощи в решении проблемы.
Заранее благодарен.
Ответить с цитированием