【问题标题】:My setInterval is generating error "2VM6:1 Uncaught ReferenceError: timer is not defined at <anonymous>:1:1"我的 setInterval 正在生成错误“2VM6:1 Uncaught ReferenceError: timer is not defined at <anonymous>:1:1”
【发布时间】:2020-04-06 19:21:30
【问题描述】:

我想在迷你计算器中显示时间(小时、分钟、秒),但我正在接收 一个不寻常的错误消息:

{2VM6:1 Uncaught ReferenceError: timer is not defined 在:1:1}。

我认为setInterval 方法导致了该错误,我的脚本在下面我相信错误来自那里:

 ```<!DOCTYPE html>
    <html lang="en">
    <head>
        <script src="script.js"></script>
        <link rel="stylesheet"  href="style.css"/>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id="container">
            <div id="time">chinaza</div>
            <div class="item_1" id="display_container"></div>
            <div class="item_1" id="result"></div>
            <div class="item_1" id="key_container">
                <table>
                    <tr>
                        <td>7</td>
                        <td>8</td>
                        <td>9</td>
                        <td>del</td>
                    </tr>
                    <tr>
                        <td>4</td>
                        <td>5</td>
                        <td>6</td>
                        <td>/</td>
                    </tr>
                    <tr>
                        <td>1</td>
                        <td>2</td>
                        <td>3</td>
                        <td>-</td>
                    </tr>
                    <tr>
                        <td>.</td>
                        <td>0</td>
                        <td>=</td>
                        <td>+</td>
                    </tr>
                </table>
            </div>
        </div>
    </body>
    </html>
    window.onload=function(){
        function timer(){
            let time =new Date();
            let hour=time.getHours();
            let min=time.getMinutes();
            let sec=time.getSeconds();
            console.log(hour,min,sec);
            document.getElementById("time").innerHTML=sec;
        }
        setInterval("timer()",1000);
    }```

【问题讨论】:

    标签: javascript css dom-events setinterval


    【解决方案1】:

    您不想像这样在引号中传递计时器。这是一支你应该可以使用的工作笔:

    window.onload=function(){
      function timer(){
        let time =new Date();
        let hour=time.getHours();
        let min=time.getMinutes();
        let sec=time.getSeconds();
        document.getElementById("time").innerHTML=sec;
      }
      window.setInterval(function() { timer() },1000);
    };
    &lt;div id="time"&gt;&lt;/div&gt;

    【讨论】:

    • 你真是个天才,请解释一下你做了什么。
    • 首先,您将函数用引号括起来,如下所示:setInterval("timer()",1000),并且您不想在它周围加上引号。如果我只删除这样的引号:setInterval(timer(),1000),那么我只会将调用 timer() 函数的结果传递给 setInterval。相反,在我的回答中,我将您的 timer() 作为函数 传递给 setInterval,它指示 setInterval 在这种情况下每秒调用一次。请支持答案,因为它满足您的需求,如果此评论不能很好地解释您的要求,请告诉我。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多