2017-04-13 30 views
1

我試圖運行的代碼中使用index.html文件和文件的script.js,沒有別的簡單的幾行。代碼在Codepen,但不是我的桌面文件

在HTML文件中,我有DOCTYPE HTML:

<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script src="javascript/script.js"></script> 
</head> 
<body> 

    <div id="content1">This is content 1 </div> 
    <div id="content2">This is content 2 </div> 
    <div id="content3">This is content 3 </div> 

</body> 
</html> 

而對於我的JavaScript部分我有:

var elems = $("div"); 
if (elems.length) { 
    var keep = Math.floor(Math.random() * elems.length); 
    for (var i = 0; i < elems.length; ++i) { 
    if (i !== keep) { 
     $(elems[i]).hide(); 
    } 
    } 
} 

當我CodePen甚至在代碼編輯器上運行它,或這個網站,它工作正常。但是,當我用我的桌面(index.html的,的script.js上的文件不工作我相信文件夾結構是正確的(是的script.js在JavaScript文件夾。)

謝謝大家

+0

如果代碼正在codepen,然後這顯然是不符合code.Try檢查在Chrome瀏覽器開發工具中的文件(Ctrl + Shift + I,源標籤)的問題,看看是什麼樣子。 – TricksfortheWeb

回答

1

包裝你的代碼在此函數,如果該文件已準備好執行它

$(document).ready(function(){ 
// your code goes here 
}); 
+0

這工作,非常感謝我的朋友! –

+0

可以將其設置爲接受的答案,如果這個代碼爲解決? – Felix

5
只是身體標記閉幕前

移動你的腳本標籤:

<script src="javascript/script.js"></script> 
</body> 

這樣的DOM會在腳本運行時可用。

如果您希望將自己的劇本在head部分,然後換你的代碼在DOMContentLoaded事件處理程序:

document.addEventListener("DOMContentLoaded", function() { 
    var elems = $("div"); 
    if (elems.length) { 
     var keep = Math.floor(Math.random() * elems.length); 
     for (var i = 0; i < elems.length; ++i) { 
     if (i !== keep) { 
      $(elems[i]).hide(); 
     } 
     } 
    } 
}); 

...所以有你的代碼運行時,DOM已準備就緒。

你並沒對jquery標記您的問題,但你似乎使用它,你可以用這個更短的代碼做基本與上面相同:

$(function() { 
    var $elems = $("div").hide(), 
    $elems.eq(Math.floor(Math.random() * $elems.length)).show(); 
}); 
+0

這工作,謝謝救救我! –

+0

不要忘了[標記爲接受的答案之一(http://stackoverflow.com/help/someone-answers)。 – trincot

相關問題