Javascript 无法解决JS解决方案
我正在尝试解决这个JavaScript代码挑战。我真的很挣扎,想听听你的建议吗 我正在努力提高我的调试能力,而这一点我很难做到Javascript 无法解决JS解决方案,javascript,challenge-response,Javascript,Challenge Response,我正在尝试解决这个JavaScript代码挑战。我真的很挣扎,想听听你的建议吗 我正在努力提高我的调试能力,而这一点我很难做到 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Clicker</title> <meta name="description" content=""> <s
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Clicker</title>
<meta name="description" content="">
<style></style>
</head>
<body>
<button>Click!</button>
<script>
const counter = {
cnt: 0,
inc: function() {
cnt++;
console.log(cnt);
}
};
const button = document.getElementsByTagName('button')[0];
button.addEventListener('click', counter.inc(), false);
</script>
</body>
</html>
点击器
点击
常数计数器={
cnt:0,
inc:function(){
cnt++;
控制台日志(cnt);
}
};
const button=document.getElementsByTagName('button')[0];
addEventListener('click',counter.inc(),false);
但是我得到了错误
未捕获引用错误:第19行未定义cnt
inc函数中未定义
cnt
变量。它(cnt
)存在于对象计数器中
不在函数inc
中。您还可以使用this
参考来解决此问题。网上有几篇关于它的文章
那么到底是什么问题呢?会发生什么?任何东西错误?
cnt
不会在inc
功能中定义。可能的重复实际上有两个问题@乔治重复的建议是对的,它会解决你的问题。但是,由于没有附加函数引用,因此在附加eventListener的方式上会遇到另一种情况。阅读此处接受的答案:counter.cnt++代码>更改此行:按钮.addEventListener('click',counter.inc(),false)代码>收件人:按钮。addEventListener('click',counter.inc,false)代码>“您也可以使用此引用解决此问题”。仔细的在inc功能中使用此
的解决方案将不起作用,因为此
将是对事件目标的引用。除非您使用按钮添加事件侦听器。addEventListener('click',counter.inc.bind(counter),false)
@guillaumegorges,是的。
const counter = {
cnt: 0,
inc: function() {
counter.cnt++;
console.log(counter.cnt);
}
};