[英]How can I access DOM objects in an external JavaScript file?
我正在使用外部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文檔本身中時,一切正常。 如何授予DOM訪問我的JavaScript文件的權限?
您必須封裝如下代碼:
$(function(){
$('#domToChange').attr('someAttribute');
});
以便在DOM准備就緒時執行代碼。
您應該將所有與DOM相關的代碼包裝到
$(function() {
//Code
});
然后,當DOM完全加載時,將執行代碼。
嘗試獲取屬性的值,如下所示:
$('#domToChange').attr('someattribute');
//or
$('#domToChange').attr('someAttribute'); // i know you've tried this, but pls check demo
演示在這里 。 在我的機器上,瀏覽器Chrome版本28.0.1500.95 m,它運行良好。
好的,這是一件偶然的事情(但我相信這是一個准確的解釋),但真正的解釋卻在這里。
您需要了解jQuery是已初始化的對象 。 因此,jQuery對象需要花費一些時間來初始化。 就像說的那樣
區分jQuery對象和本機DOM元素非常重要。 本機DOM方法和屬性不在jQuery對象上,反之亦然。
因此,不必在初始化DOM的同時初始化jQuery對象。
另外,所有傳遞的腳本都具有defer
屬性。 這主要取決於瀏覽器。
就像說的那樣
設置時,此布爾屬性向用戶代理提供一個提示,即腳本將不會生成任何文檔內容(例如,javascript中沒有“ document.write”),因此,用戶代理可以繼續解析和呈現。
而且有時可能會延遲腳本的執行。 因此,根據不同的人會有不同的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.