我猜測它與運行時間有關。如果它在頁面加載之前運行,那麼這些對象將不會在頁面中並且不會被找到。
爲了使功能的工作,無論它位於何處,把它放在裏面$(document).ready()
像這樣:
$(document).ready(function() {
var h = $('#searchcontainer').height();
$('#completeholder').css('height', h + 'px');
});
如果你真正想做的是不同$(document).ready(function()
調用之間共享的全局變量,然後需要聲明的全局變量的$(document).ready(function()
外:
var myGlobal;
$(document).ready(function() {
var myGlobal = $('#searchcontainer').height();
});
$(document).ready(function() {
$('#completeholder').css('height', myGlobal + 'px');
});
全局像這樣一般不會擺在首位是一個好主意,讓你真正應該做的是尋找一種方式來解決這個沒有全局變量(如傳遞參數到一個函數調用)。
無法看到實際的工作和非工作代碼的一些觀察:
- 你有相同的ID(如
contentholder
)多個對象。通過id引用這些對象將無法可靠地工作,並且在HTML中被禁止。
- 在內聯版本中,您將在
case 'NextQuestion1':
塊和case 'NextQuestion2Dance':
中設置完整持有者的高度,但您在外部JS版本中沒有這樣做。該代碼似乎是修復它的。在我的瀏覽器中,這些情況說明中的高度設置爲479(正確的高度)。這在外部JS版本中不會發生,因此這兩個版本之間的代碼不相同。
我的整個代碼是在一個文檔就緒函數:/ – pufAmuf
下一個猜測。 jQuery是否在你的外部JS文件之前加載? JS文件必須以適當的順序加載。我希望你現在意識到你沒有透露足夠的信息讓我們知道問題是什麼,所以我們只是猜測。給我們一個鏈接到非工作頁面可能會清除事情。 – jfriend00
我實際上認爲變量不會被跨越文件,因爲當從JS文件中取出整個代碼並將其放入html中時 - 一切正常。還有一些內容會在我插入此代碼後動態加載;而且它只有在我從html文件中完成時纔有效。 – pufAmuf