Javascript 我可以为功能范围之外的文档对象定义别名吗

Javascript 我可以为功能范围之外的文档对象定义别名吗,javascript,dom,Javascript,Dom,这在我的浏览器中不起作用-这正常吗?只有在函数someFunc范围内声明文档对象的别名时,它才起作用 var pic1 = document.getElementById('pic1'); var someFunc = function () { pic1.style.left = "100px"; } 对。您只需确保在页面上加载pic1元素后调用someFunc。在这一点上,最好的做法是将JavaScript放在右下角的结束body标记之前 检查您的代码的实际操作-这不是范围问

这在我的浏览器中不起作用-这正常吗?只有在函数someFunc范围内声明文档对象的别名时,它才起作用

var pic1 = document.getElementById('pic1');

var someFunc = function () {

    pic1.style.left = "100px"; 
}

对。您只需确保在页面上加载
pic1
元素后调用
someFunc
。在这一点上,最好的做法是将JavaScript放在右下角的结束
body
标记之前


检查您的代码的实际操作-

这不是范围问题。可能的原因是您试图在创建元素之前获取对该元素的引用。您必须等到元素加载完毕后才能访问它,例如使用onload事件:

<html>
<head
<title>Test</title>
<script>

function init() {

  var pic1 = document.getElementById('pic1');

  var someFunc = function () {
    pic1.style.left = "100px"; 
  };

  someFunc();

}

</script>
</head>
<body onload="init();">
<div id="pic1"></div>
</body>
</html>


看起来不错,应该可以工作,假设整个代码示例是在文档中声明id为
“pic1”
的元素之后执行的。您仍然需要调用
someFunc
。你真的在你的代码中调用它吗?标准规定脚本在头部分,所以这将是最佳实践。将脚本放在正文中有不同的原因,但这不应该是第一个选择。非常好的示例,谢谢!在我的应用程序中,它无法正常工作。我会做更多的测试。@Guffa,用HTML规范中的一行注释回来,说明
script
在头部。我知道这是惯例。然而,在我10年的web开发中,我在规范中既没有遇到过这个问题,也没有遇到W3C验证程序错误或警告。@Crescent Fresh@Oded当然pic1元素是用HTML定义的@Guffa我把JS代码放在一个外部文件中,这是我认为最好的做法。我在我的应用程序中做了一些测试,这确实是一个竞赛条件,在加载HTML元素之前调用了someFunc函数外部的JS代码。警报因此返回[null]而不是[object HtmlLevel]。尖锐而有用的回答,谢谢。