如何在外部JavaScript文件中访问DOM对象?

时间:2013-08-14 22:40:21

标签: javascript jquery html5 dom dhtml

我正在使用外部JavaScript文件访问我的文档中的DOM个对象。问题是,如果jQuery是外部加载的文件,它似乎没有访问权限。我的代码如下:

<html>
    <head>
    </head>

    <body>
        <div id="domToChange" someAttribute="hi"></div>
        <script src="officialJqueryLibrary"></script>
        <script src="myJS.js"></script>
    </body>
</html>

///////// myJS.js file

// Returns undefined
$('#domToChange').attr('someAttribute');

当外部加载JavaScript文件时,DOM选择器似乎找不到我的div。但是当我将它放在HTML文档本身时,一切都有效。如何为我的JavaScript文件提供DOM访问权限?

4 个答案:

答案 0 :(得分:0)

你必须像这样附上代码:

$(function(){
     $('#domToChange').attr('someAttribute');
});

这样在DOM准备就绪时执行代码。

答案 1 :(得分:0)

您应该将所有与DOM相关的代码包装到

$(function() {
    //Code
});

然后在DOM完全加载时执行代码。

答案 2 :(得分:0)

尝试获取属性的值,如下所示:

$('#domToChange').attr('someattribute');
//or
$('#domToChange').attr('someAttribute'); // i know you've tried this, but pls check demo

演示here。在我的机器上,浏览器Chrome版本为28.0.1500.95 m,它运行正常。

答案 3 :(得分:0)

好的,这是一种轻而易举的事情(但我认为这是一个准确的解释),但真实的解释为什么会发生就在这里。

您需要了解 jQuery是一个初始化的对象。所以jQuery对象需要时间来启动。正如它所说,

  

对于区分jQuery对象和本机DOM元素非常重要。 jQuery对象上不存在本机DOM方法和属性,反之亦然。

因此,在DOM初始化的同时,jQuery对象不必初始化。

此外,所有传递的脚本都具有defer属性。这主要取决于浏览器。

正如它所说,

  

设置时,此布尔属性向用户代理提供脚本不会生成任何文档内容的提示(例如,javascript中没有“document.write”),因此,用户代理可以继续解析和呈现

它有时会延迟脚本的执行。因此根据不同的人不同的结果。