2010-11-16 103 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>中,你会没事的。