Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法解决JS解决方案_Javascript_Challenge Response - Fatal编程技术网

Javascript 无法解决JS解决方案

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

我正在尝试解决这个JavaScript代码挑战。我真的很挣扎,想听听你的建议吗

我正在努力提高我的调试能力,而这一点我很难做到

<!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);
    }
};