У меня проблема с установкой EventListener на кнопку JS - PullRequest
0 голосов
/ 20 октября 2018

Когда я попытался установить eventlistener на мою кнопку (условие с «^»), я получил Uncaught SyntaxError: Неожиданный токен <ошибка в HTMLButtonElement .. Что делать, я не знаю.Заранее спасибо) </p>

op = ["button","#hello","^somefun()","<father"];
var el = document.createElement(op[0]);

	if(op[s][0] == "#"){	
		el.id = op[s].substring(1,op[s].length);
		s++;
		console.log(s);
	}
	// set class of element
	if(op[s][0] == "."){
		el.className = op[s].substring(1,op[s].length);
		s++;
		console.log(s,el.style.className);		
	}
	//set text that will be in element
	if(op[s][0] == "_"){	
		el.innerHTML = op[s].substring(1,op[s].length);
		s++
		console.log(s);	
	}
//there i got a error!
if(op[s][0] == "^"){
		s++;
		el.addEventListener("click",function () {
			eval(op[s]);
		});
		s++;
		console.log(s);
}

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Как отмечали другие в комментариях, проблема связана с "op" и этой строкой:

op = ["button","#hello","^somefun()","<father"];

Изменение на:

op = ["button","#hello","^somefun()","<father>"];

Устранит проблему.

0 голосов
/ 20 октября 2018

Когда вы помещаете вызов в eval, вы передаете полную строку, сохраненную в массиве ("^somefun()").^somefun() - синтаксическая ошибка.Вам нужно нарезать строку, чтобы исключить ^.

Некоторые другие вещи, которые могут нуждаться в переработке:

  • Не используйте ==, для javascript используйте ===, это предотвращает непредвиденное поведение.
  • Не используйте eval, большую часть времени это проблема безопасности
  • Не используйте символы строки, например, массива.
...