Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Удаление выпадающего списка (https://javascript.ru/forum/events/73089-udalenie-vypadayushhego-spiska.html)

Искандер 20.03.2018 15:23

Удаление выпадающего списка
 
Всем привет
Не знаю как решить
В HTML коде при помощи JS создается выпадающий список.
Но перед созданием нового старый надо удалить.
Никак не получается удалить старый список.
Подскажите
С уважением
Александр

HTML :
<form name="vibor" method="post">
<input type="number" min="1" max="255" step="1" value="1" id="nomSign" /><br>
<input type="button" value="Выбор сигнализатора" id="txt" onclick="VoborSign()"/><br>
<input type="button" value="Обновление списка сигнализаторов" id="txt1" onclick="Spisok()"/><br>
</form>
<form >
<select name=ZavN size=1 id="menu1">
</select>
</form>

JS:
removeChildren(Sign); // удаление старого списка
var nn=1;
for(var n=0; n<otvmas.length; n++) {// otvmass - массив для заполнения списка
var Sign= "<option value="+nn+">"+ otvmas[n]+ "< /option>";
document.getElementById('menu1').insertAdjacentHTM L('beforeEnd',Sign)
nn++;
}

ksa 20.03.2018 16:32

Цитата:

Сообщение от Искандер
Никак не получается удалить старый список.

http://www.fpublisher.ru/documentati...s#hremovechild

Искандер 20.03.2018 16:47

Спасибо
Но ссылка не открывается

Dilettante_Pro 20.03.2018 16:54

Цитата:

Сообщение от Искандер
Но ссылка не открывается

Открывается.
вот цитата оттуда
Цитата:

Метод removeChild
Синтаксис: узел.removeChild(oldChild)
Аргументы: oldChild — выражение типа Node
Результат: узел Node
Исключения: NO_MODIFICATION_ALLOWED_ERR, NOT_FOUND_ERR
Поддержка: Internet Explorer Соответствует стандарту.
Gecko Соответствует стандарту.
Метод removeChild удаляет узел oldChild из списка детей данного узла и возвращает его в качестве результата. Пример:

document.body.removeChild(document.body.firstChild );

Искандер 20.03.2018 17:18

Всем спасибо
Буду пробовать

Искандер 21.03.2018 15:48

Второй день мучаюсь - не получается.
Я что-то не понимаю
Создал список :
<form >
<select name=ZavN size=1 id="menu1">
</select>
</form>

В JS написал вставку и удаление. Вставка работает а удаление нет:
var nn=1;
for(var n=0; n<otvmas.length; n++){
var Sign= "<option value="+nn+">"+otvmas[n]+"</option>";
var Sign1 = document.getElementById('menu1').insertAdjacentHTM L('beforeEnd',Sign)
nn++;
}
document.body.removeChild(document.body.Sign);
document.body.removeChild(document.body.menu1);
Я уже два удаления написал ни одно не работает.
Подскажите, где ошибка.
Заранее спасибо
Александр

рони 21.03.2018 16:00

Искандер,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

ksa 21.03.2018 16:17

Цитата:

Сообщение от Искандер
Второй день мучаюсь - не получается.

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

Искандер 21.03.2018 16:36

<body>
<form name="vibor" method="post">
<input type="number" min="1" max="255" step="1" value="1" id="nomSign" /><br>
<input type="button" value="Выбор сигнализатора" id="txt" onclick="VoborSign()"/><br>
<input type="button" value="Обновление списка сигнализаторов" id="txt1" onclick="Spisok()"/><br>
</form>
<form >
<select name=ZavN size=1 id="menu1">
</select>
</form>
</body>

JS:
var otvmas=[15,25,36,87];
function Spisok() {
console.log("TEST")
var nn=1;
for(var n=0; n<otvmas.length; n++){
var Sign= "<option value="+nn+">"+otvmas[n]+"</option>";
var Sign1 = document.getElementById('menu1').insertAdjacentHTM L('beforeEnd',Sign)
nn++;
}
document.body.removeChild(document.body.Sign);
document.body.removeChild(document.body.menu1);
}
Спасибо
Александр

Искандер 21.03.2018 16:42

<body>
<form name="vibor" method="post">
<input type="number" min="1" max="255" step="1" value="1" id="nomSign" /><br>
<input type="button" value="Выбор сигнализатора" id="txt"  onclick="VoborSign()"/><br>
<input type="button" value="Обновление списка  сигнализаторов" id="txt1"  onclick="Spisok()"/><br>
</form>
<form >
 <select name=ZavN size=1  id="menu1">
 </select>
</form>
</body>


var otvmas=[15,25,36,87];
function Spisok() {		
					console.log("TEST")
					var nn=1;
					for(var n=0; n<otvmas.length; n++){					
					var Sign= "<option value="+nn+">"+otvmas[n]+"</option>";
					var Sign1 = document.getElementById('menu1').insertAdjacentHTML('beforeEnd',Sign)
					nn++;			
					}
					document.body.removeChild(document.body.Sign);																						
					document.body.removeChild(document.body.menu1);																
}

Спасибо
Александр

рони 21.03.2018 16:43

Искандер,
[HTML] ... ваш код...
[/HTML]

рони 21.03.2018 16:50

Искандер,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
var otvmas=[15,25,36,87];
function Spisok() {
          var Sign = "";
          for(var n=0; n<otvmas.length; n++){
          Sign += "<option value="+ (n + 1)+">"+otvmas[n]+"</option>";
          }
         document.getElementById('menu1').options.length = 0;
         document.getElementById('menu1').insertAdjacentHTML('beforeEnd',Sign)
}

  </script>
</head>

<body>
<form name="vibor" method="post">
<input type="number" min="1" max="255" step="1" value="1" id="nomSign" /><br>
<input type="button" value="Выбор сигнализатора" id="txt"  onclick="VoborSign()"/><br>
<input type="button" value="Обновление списка  сигнализаторов" id="txt1"  onclick="Spisok()"/><br>
</form>
<form >
 <select name=ZavN size=1  id="menu1">
 </select>
</form>
</body>
</html>

Искандер 21.03.2018 16:56

Спасибо
У меня это работает
Но на практике массив "otvmas" у меня приходит с сервера.
И перед тем как сформировать новое меню мне надо старое удалить а после заменить новым.
Александр

Искандер 21.03.2018 16:59

Спасибо
У меня это работает
Но на практике массив "otvmas" у меня приходит с сервера.
И перед тем как сформировать новое меню мне надо старое удалить а после заменить новым.
У меня не получается удаление
Александр

рони 21.03.2018 17:01

Цитата:

Сообщение от Искандер
У меня не получается удаление

строка 17 пост №12

Искандер 21.03.2018 17:16

Всем спасибо
понял
буду разбираться
С уважением
Алексадр

Dilettante_Pro 21.03.2018 17:33

Можно и явно удалять с помощью removeChild
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>

  <script>
var otvmas=[[15,25,36,87],[10,20,30]], i = -1;
function Spisok() {
          var Sign = "";
          i == 1? i = 0: i++;
          for(var n=0; n<otvmas[i].length; n++){
          i
          Sign += "<option value="+ (n + 1)+">"+otvmas[i][n]+"</option>";
          }
         var sel = document.getElementById('menu1');
         while(sel.firstChild) { sel.removeChild(sel.firstChild)};
         sel.insertAdjacentHTML('beforeEnd',Sign)
}

  </script>
</head>

<body>
<form name="vibor" method="post">
<input type="number" min="1" max="255" step="1" value="1" id="nomSign" /><br>
<input type="button" value="Выбор сигнализатора" id="txt"  onclick="VoborSign()"/><br>
<input type="button" value="Обновление списка  сигнализаторов" id="txt1"  onclick="Spisok()"/><br>
</form>
<form >
 <select name=ZavN size=1  id="menu1">
 </select>
</form>
</body>
</html>

Искандер 27.03.2018 12:51

Ребята
Всем большое спасибо за внимание
С уважением
Александр

рони 27.03.2018 13:04

на всякий случай ...
строка 16 пост №17 это небольшая опечатка Dilettante_Pro,

Dilettante_Pro 27.03.2018 14:10

рони,
:thanks: Я и не заметил... И ничего - работает:)


Часовой пояс GMT +3, время: 05:59.