Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отображение нового элемента в массиве (https://javascript.ru/forum/dom-window/61016-otobrazhenie-novogo-ehlementa-v-massive.html)

Sashkouuu 31.01.2016 20:51

Отображение нового элемента в массиве
 
Доброго времени суток!

Есть скрипт в котором есть выпадающий список, который берет данные с массива и есть текстовое поле с кнопкой, которые добавляют новые элементы в массив.
Нужна помощь в следующем: как сделать так, что бы после добавления нового элемента, при вызове выпадающего списка, новый элемент отображался уже в списке.

<html>
<head>
<title>TTL</title>
<meta charset= "utf-8">
</head>
<body>

Твердость : <select id = 'Rock'>


<script>
var arr = new Array('TH - 415','TH - 465','TS - 275','TS - 260');

window.onload = function() // Функция выпадающего списка Твердость
{
var e = document.getElementById('Rock');

for (var i = 0; i < arr.length; i++)
{
var option = document.createElement('option');
option.innerHTML = arr[i];
e.appendChild(option);
}

}

function button(){ //Функция добавления в массив Твердость
var add=document.getElementById('text').value
arr.push(add);

}

</script>

Твердость <select id="Rock"</select> <!--Выпадающий список-->

Добавить <input type='text' id='text'> <!-- Добавление элемента в массив-->
<input type="button" onclick="button(); reload_()" value="+"/>
</body>
</html>

рони 31.01.2016 21:02

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

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


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

destus 31.01.2016 21:02

Добавлять text.value сразу в select, а не в массив

рони 31.01.2016 21:08

Цитата:

Сообщение от destus
Добавлять text.value сразу в select, а не в массив

а если 10 раз введут одно и тоже?

destus 01.02.2016 10:07

Цитата:

Сообщение от рони (Сообщение 405786)
а если 10 раз введут одно и тоже?

Типо такого...

var isUnique = function(nodeArray,text)
		{	
			for (var i = 0; i < nodeArray.length; i++)
			{	
				if ( nodeArray[i].textContent == text ) return false;
			}
			return true;	
		}

button.addEventListener('click',function(e){
			var e = e || event;
			var op = sel.getElementsByTagName('option');
			if (isUnique(op,text.value)){
				addOption(sel,text.value);
				text.value = '';
			}
			else alert('No');
		}, false);

рони 01.02.2016 10:14

destus,
а где addOption?

destus 01.02.2016 10:33

Цитата:

Сообщение от рони (Сообщение 405833)
destus,
а где addOption?

хотелось бы чтобы автор сам подумал над такой простой задачей...

var addOption = function(parent,node){
			var option = document.createElement('option');
			option.innerHTML = node;
			parent.appendChild(option);	
		}


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