首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getElementById变量作用域

getElementById变量作用域
EN

Stack Overflow用户
提问于 2018-06-28 17:46:19
回答 2查看 559关注 0票数 0

在下面的示例中,为什么不能从函数内部访问“status.value”?如果我将函数中的'status.value‘替换为document.getElementById("Label").value,一切都会正常工作。谢谢。

代码语言:javascript
复制
<html>
<body onload="Ticker()">
 <label>Connection Status:</label>
 <input type="text" readonly="true" value="Idle" id="Label">
 <input type="button" value="Start/Stop" onclick="run=!run">
 <br>

 <script>
 var status = document.getElementById("Label");
 var run;

  function Ticker() {
      setTimeout( Ticker, 100 );

        if(run){
           status.value = "Connected";
        }else{
           status.value = "Disconnected";
        }
  }
</script>
</body>
</html>
EN

回答 2

Stack Overflow用户

发布于 2018-06-28 18:53:07

代码语言:javascript
复制
<html>

  <body onload="Ticker()">
    <label>Connection Status:</label>
    <input type="text" readonly="true" value="Idle" id="Label">
    <input type="button" value="Start/Stop" onclick="run=!run">
    <br>

    <script>
      var run;

      function Ticker() {
        setTimeout(Ticker, 100);
        var status = document.getElementById("Label");
        if (run) {
          status.value = "Connected";
        } else {
          status.value = "Disconnected";
        }
      }

    </script>
  </body>

</html>

票数 0
EN

Stack Overflow用户

发布于 2018-06-28 19:23:12

由于计时器下的函数在下一个事件周期中执行,因此它不会知道状态。如果你想传递'status‘,你应该把它作为参数传递给settimeout函数,如下所示:

代码语言:javascript
复制
 var status = document.getElementById("Label");
function Ticker(status) {
        setTimeout(Ticker, 100,status);      
        if (run) {
          status.value = "Connected";
        } else {
          status.value = "Disconnected";
        }
      }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51079693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档