2010-11-16 91 views
0

我想重用一些腳本,我已經在另一個頁面上工作,但始終得到與此錯誤。javascript錯誤:對象沒有定義

我有一個名爲CalendarPopup.js的.js文件。它鏈接到我的HTML這樣的:

<script type="text/javascript" src="/administrator/components/com_arrcard/js/CalendarPopup.js"></script> 

這是一個顯示彈出日曆,用戶可以選擇從當他們點擊一個鏈接日期的JavaScript庫。該值然後被放入一個字段。下面是顯示領域,並鏈接代碼:

<tr id="birthDate"> 
<td align="left" valign="top"> 
    <script type="text/javascript"> 
    var calStart = new CalendarPopup("calendar"); 
    calStart.showNavigationDropdowns(); 
    </script> 
    Birth Date: 
</td> 

    <td> 
    <input style="width:124px;" type="text" name="birthdate" value="" /> 
    <a href="#" onclick="calStart.select(document.instantForm.birthdate,'anchorBirthdate','MM/dd/yyyy'); return false;" id="anchorBirthdate">select</a> 
    </td> 
</tr> 

然後是實際持有日曆一個div:

<div id="calendar" style="position:absolute;visibility:hidden; background-color:white; layer-background-color:white;"></div> 

所有這一切都完美的作品在一個頁面上,但在這個新的,我「M收到錯誤

CalendarPopup is not defined 

在這條線:

var calStart = new CalendarPopup("calendar"); 

我錯過了什麼?我確信這是一件非常明顯的事情,但我一直盯着它太久,卻看不到它。

+2

你是否已經將JS文件包含在新文件中? – Oded 2010-11-16 18:22:51

+1

確保你可以在瀏覽器/ FireBug中看到CalendarPopup文件 – wajiw 2010-11-16 18:23:51

+0

@Oded,是的,我確定。 @wajiw,當我做一個查看源並點擊腳本標記中的鏈接時,它會打開CalendarPopup.js文件。 – EmmyS 2010-11-16 18:29:01

回答

1

確保定義CalendarPopup類的腳本位於其他JavaScript引用它之前的位置。

+1

我在想這一定是問題所在。詳細說來,EmmyS會希望使用 Matt 2010-11-16 19:11:33

+0

我不能使用任何身體事件;這是在一個Joomla網站,頭部和身體標籤生成,而不是編碼在我正在工作的頁面內。 – EmmyS 2010-11-16 19:51:24

+0

@EmmyS我知道一些圖書館支持文件'準備好'的事件,將啓動一個正確的時間,無論至於何時被指定。我知道jQuery做到了這一點。 – Matt 2010-11-16 20:09:02

0

如果你的JS文件的來源是一樣的 http://www.mattkruse.com/javascript/calendarpopup/source.html,則據說在您必須包括其他三個js文件太多
AnchorPosition.js
date.js
PopupWindow.js

謝謝。

+0

進一步閱讀;它也會說「或者,您可以選擇上面的」Combined「源選項,將所有必需的文件包含在單個JS文件中。」我們使用組合文件,其中包含所有必需的代碼。正如我所說,這可以在網站的其他部分工作。 – EmmyS 2010-11-16 18:58:08

1

您可以向窗口添加事件偵聽器,並在加載後執行使用.js文件的代碼。

//Some js file 

window.addEventListener('load',onload,false); 


function onload(){ 

var x = new yourObject(); 
} 

您目前在加載之前調用它,因此對象未定義錯誤。

0

這個問題更可能是您的JavaScript文件的加載順序。

<script>包含標籤放在<head>中,你會沒事的。