【问题标题】:Why doesn't my inner function have access to an object variable defined in its parent function?为什么我的内部函数无法访问其父函数中定义的对象变量?
【发布时间】:2015-06-29 04:10:47
【问题描述】:

我正在尝试创建一个简单的倒数计时器,但我遇到了一个我认为应该可以工作的范围问题。

为什么我的内部函数不能访问其父函数中定义的对象变量?

JavaScript 控制台一直显示未定义。

function test() {
        var minutes = document.getElementById("minutesInput").value;

        var displayMinutesObj = document.getElementById("displayMinutes");

        displayMinutesObj.innerHTML = minutes;

        function timey() {
        console.log( displayMinutesObj.value );
        }

        setInterval(timey,1000); 
    }

【问题讨论】:

  • 那么,id 为“displayMinutes”的元素可能不再是输入字段了?如果它无法访问对象本身,则会引发错误。
  • displayMinutesObj.innerHTML = minutes; 到底应该做什么?
  • 如果存在范围问题,控制台将显示 ReferenceError。
  • 确实如此! console.log( displayMinutesObj); 显示什么?

标签: javascript scope


【解决方案1】:

通过displayMinutesObj.innerHTML = minutes;这一行,我假设该元素不是输入元素,因此您不能使用.value,因为.value属性适用于表单元素,因此更改为:

..
function timey() {
    console.log( displayMinutesObj.innerHTML );
}
..

【讨论】:

  • 哇!看了好几遍都没看懂!非常感谢!
猜你喜欢
  • 2018-12-31
  • 1970-01-01
  • 2020-06-20
  • 2019-01-05
  • 2011-06-23
  • 1970-01-01
  • 2022-11-23
  • 2016-11-08
  • 2011-07-23
相关资源
最近更新 更多