Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Создание объекта по событию и наполнение его (https://javascript.ru/forum/misc/76149-sozdanie-obekta-po-sobytiyu-i-napolnenie-ego.html)

Tipylja 09.12.2018 14:42

Создание объекта по событию и наполнение его
 
Здравствуйте. Есть обработчик события на клике по элементу. В этой функции необходимо получать значения с инпутов и записывать их в объект, тем самым наполняя его, вот код:
const names = {};
addButton.addEventListener('click', () => {
    let name = addNameInput.value;
    let value = addValueInput.value;        
    names[name] = value;
    console.log(names);

});


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

j0hnik 09.12.2018 18:37

<div id="addButton">111</div>
	<script>
		var names;
		addButton.addEventListener('click', ()=>{
			console.log(names) //для демонстрации
			if(!names) names = {};
			//...добавляйте свойства
		});
	
	</script>

Tipylja 10.12.2018 00:19

Не совсем понял разницы. names точно так же как и в моем коде, объявляется вне обработчика. Мне нужно этот names создать внутри обработчика, если клик идет в первый раз, а при последующих кликах просто заполнять в уже существующий объект. Что типа такого:
addButton.addEventListener('click', () => {
    let name = addNameInput.value;
    let value = addValueInput.value;
    if(!names) {
        var names = {};
        names[name] = value;
   }else{
        names[name] = value;
   }

});

j0hnik 10.12.2018 02:25

Цитата:

Сообщение от Tipylja
Но сам объект я создаю вне обработчика события, а мне нужно что бы он создавался внутри,

объект это объект, про объявления переменной речи не шло.
<div id="addButton">111</div>
	<script>
addButton.addEventListener('click', () => {
    if(!window.names) {
       names = {};
   }
   else{
        console.log('else');
   }
});
</script>

только разницы никакой где объявлять :)


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