2016-04-26 134 views
0

這確實是一個非常奇怪的問題,我希望它很簡單。我無法在我的html文檔中獲得簡單的選擇和附加操作,但是當我在Chrome瀏覽器控制檯中時,它可以正常工作。jQuery選擇器不能在腳本中工作,但在控制檯中工作

<html> 
<head> 
<script src="https://code.jquery.com/jquery-1.12.3.min.js" integrity="sha256-aaODHAgvwQW1bFOGXMeX+pC4PZIPsvn2h1sArYOhgXQ=" crossorigin="anonymous"></script> 
<script src="/js/script.js"></script> 
<script> 
$('[data-js="works"]').append("hello"); 
</script> 
</head> 
<body> 
<div data-js="works"></div> 
test 

</body> 
</html> 

當我把這一行腳本放在控制檯中時,你好出現在測試上面。當我剛打開頁面時,測試就在那裏。我之前正在從此頁面運行腳本,當我試圖選擇一個它不起作用的元素時。然後,我去內聯腳本,看看它是否會在那裏工作,不。我已經看過,如果它沒有導入腳本的內聯腳本工作,也不是。控制檯沒有錯誤信息。如果需要,我可以從該內聯腳本打印到我的控制檯,但是此代碼仍然無法正常運行。

不能與我的本地httpserver一起使用,並且不能像本地打開的文件一樣工作。

+0

你正在運行的JS之前存在於頁面上的實際內容。將腳本放在結束標籤之前或將其包裝在文檔準備好的調用中。 – j08691

回答

2

之間的JS代碼。這是因爲劇本在加載頁面之前執行,因此目標div還不存在。

解決方案是等待頁面完全加載後再做點事情。 $函數可以用於此。給它一個回調,一旦頁面被加載,它就會被執行。

您還可以使用window.addEventListener("load", callback);不需要jQuery

<html> 
 
    <head> 
 
    <script src="https://code.jquery.com/jquery-1.12.3.min.js" integrity="sha256-aaODHAgvwQW1bFOGXMeX+pC4PZIPsvn2h1sArYOhgXQ=" crossorigin="anonymous"></script> 
 
    <script> 
 
     $(function(){ 
 
     $('[data-js=works]').append("hello"); 
 
     }); 
 
    </script> 
 
    </head> 
 
    <body> 
 
    <div data-js="works"></div> 
 
    test 
 

 
    </body> 
 
</html>

另一種解決方案可以在頁面的末尾插入腳本。儘管在我看來,它並不那麼整潔。

<html> 
 
    <head> 
 
    <script src="https://code.jquery.com/jquery-1.12.3.min.js" integrity="sha256-aaODHAgvwQW1bFOGXMeX+pC4PZIPsvn2h1sArYOhgXQ=" crossorigin="anonymous"></script> 
 
    </head> 
 
    <body> 
 
    <div data-js="works"></div> 
 
    test 
 

 
    <script> 
 
     $('[data-js=works]').append("hello"); 
 
    </script> 
 
    </body> 
 
</html>

+0

祝福youuuuuuuuuu – Sally

0

嘗試以下,希望它會解決你的問題

(function($) { // This will solve namespace problem (if any) 
    // Write your JQuery code here 
})(jQuery); 

要麼你把js文件在身體的結束或將$(document).ready(function(){ //code inside })

相關問題