【问题标题】:global and local javascript scope [closed]全局和本地javascript范围[关闭]
【发布时间】:2012-02-27 12:32:32
【问题描述】:

为什么这个函数不能识别全局变量?

<script type="text/javascript">
var id_f = document.getElementById('f');

function foo()
{
id_f.innerHTML=("text");
}
</script>

【问题讨论】:

  • 你错了。它被识别出来了。
  • 你确定它没有被识别吗?你能检查一下你是否真的有一个 id 为“f”的元素吗?您可能会混淆这些错误。
  • 您的 html 代码中的哪个位置以及您使用什么浏览器进行测试?
  • 如果你想要它全局为什么你添加 var ?
  • 您确定变量包含预期值(所需元素)。初始化变量时,可能元素是未知的。

标签: javascript scope


【解决方案1】:

如果没有找到匹配的元素,.getElementById() 函数将返回 null,这不是错误,但如果您的 id_f 变量是 null,则它没有 .innerHTML 属性,这将给出错误。

即使您的页面源中存在匹配的元素,也不会找到它,除非在脚本运行后实际解析了该元素。因此,您的脚本需要位于源中元素之后的某个位置(例如,就在结束 &lt;/body&gt; 标记之前),或者您需要添加一个 onload 或 document.ready 类型的处理程序并从那里运行您的代码。

(如果将console.log(id_f)alert(id_f) 添加到函数的开头会得到什么?)

【讨论】:

  • 谢谢。这正是问题所在。我刚开始使用 javascript,所以我很欣赏答案而不是居高临下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 1970-01-01
  • 2012-08-09
  • 2021-03-05
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多