将eventlistener设置为按钮JS时出现问题

时间:2018-10-20 14:56:30

标签: javascript function eval addeventlistener

当我尝试将eventlistener设置为我的按钮(带“ ^”的条件)时,出现了Uncaught SyntaxError:HTMLButtonElement出现意外的令牌<错误。 我不知道该怎么办。 预先谢谢你

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 :(得分:0)

当您向eval发出呼叫时,将传入存储在数组("^somefun()")中的完整字符串。 ^somefun()是语法错误。您需要对字符串进行切片以排除^

可能需要重做的其他一些事情:

  • 不要使用==,对于javascript,请使用===,这样可以防止意外行为。
  • 在大多数情况下,请勿使用eval,这是出于安全考虑
  • 不要访问像数组这样的字符串的字符。

答案 1 :(得分:0)

正如其他人在评论中指出的那样,问题出在“ op”和这一行:

login.php

更改为:

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

将解决此问题。