@Kim_Soal

Js, почему такое поведение?

работает:
var inp1 = document.createElement("input");
	var inp2 = document.createElement("input");

	calculate(inp1, inp2);

	div.appendChild(inp1);
	div.appendChild(inp2);
	
	function calculate(test1, test2){
		test1.oninput = function(){
			console.log(this.value);
		}
		test2.oninput = function(){
			console.log(this.value);
		}
	}


не работает:
var inp1 = document.createElement("input");
	var inp2 = document.createElement("input");

	calculate(inp1, inp2);

	div.appendChild(inp1);
	div.innerHTML +="qwe";
	div.appendChild(inp2);
	div.innerHTML +="qwe";



	function calculate(test1, test2){
		test1.oninput = function(){
			console.log(this.value);
		}
		test2.oninput = function(){
			console.log(this.value);
		}
	}


Стало интересно почему.
Вероятно, это очевидно сразу для кого-то.
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
div.innerHTML +="qwe"

Вас вводит в заблуждение оператор += - вам кажется, будто бы к содержимому div что-то там добавляется. Это не совсем так - содержимое div полностью перезаписывается. Соответственно, ранее добавленные элементы будут удалены и заменены новыми. А к новым элементам никаких обработчиков вы не привязываете - отсюда и отсутствие вывода в консоль.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
25 апр. 2024, в 11:49
25000 руб./за проект
25 апр. 2024, в 11:37
40000 руб./за проект