AntonTitovI
@AntonTitovI
Учю web

Почему TypeError?

<ul id="list">
		<li>list1</li>
		<li>list2</li>
		<li>list3</li>
	</ul>
	<hr>
	<button id="bt">Изменить цвет!</button>

function Manipulate (idBtn, idUl){
			this.btn = document.getElementById(idBtn) ;
			this.ul  = document.getElementById(idUl);
		};

		Manipulate.prototype.clicked = function(){
			this.btn.onclick = function(){
					console.log('Onclick working!'); // working!
					this.ul.style.color = 'red'; //TypeError: this.ul is undefined
				};
		};

		const add  = new Manipulate('bt', 'list');
		add.clicked();	
		console.log('ul' in add); //true
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
sHinE
@sHinE
веб-разработчик, php/js/mysql и сопутствующее
У вас внутри
function(){
          console.log('Onclick working!'); // working!
          this.ul.style.color = 'red'; //TypeError: this.ul is undefined
        };

this будет на кнопку ссылаться, насколько я понимаю. проверьте через console.log что у вас внутри функции в this.
Если я прав, то обычно делают что-то типа
var that = this;
this.btn.onclick = function(){
          console.log('Onclick working!'); // working!
          that.ul.style.color = 'red'; //TypeError: this.ul is undefined
        };
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы