首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从另一个外部js文件调用外部js函数会出现"Undefined“错误

从另一个外部js文件调用外部js函数会出现"Undefined“错误
EN

Stack Overflow用户
提问于 2011-06-25 20:10:07
回答 3查看 2.8K关注 0票数 0

我在plugins.js中有这样的代码:

代码语言:javascript
复制
$(document).ready(function() {                         

watermark = function(elemId, text, hoverClass, normalClass, parentId){
    // onFocus event
    $("#"+elemId).focus(function(){
        ($(this).val()==text)
            $(this).val('');
        (parentId!=0)
            byId(parentId).className = hoverClass;
    });
    // onBlur event
    $("#"+elemId).blur(function(){
        ($(this).val()=='')
            $(this).val(text);
        (parentId!=0)
            byId(parentId).className = normalClass;
    }); 
}
});

然后,我在index.js文件中包含以下内容:

代码语言:javascript
复制
new watermark("footer_contact_name", "Name", "footer_form_text_active", "footer_form_text", "footer_form_field_1");

当在相同的js文件中编写时,一切都可以正常工作,但是当从index.js文件中像这样调用它时,我在FireFox中得到了一个未定义的函数错误,使用Firebug进行调试。

有什么想法吗?

谢谢

顺便说一句:我在index.html中包含了如下内容:

代码语言:javascript
复制
<script src="scripts/plugins.js" type="text/javascript"></script>
<script src="scripts/index.js" type="text/javascript"></script>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-25 20:15:37

您需要在文档准备就绪后调用该函数-将其包装在:

代码语言:javascript
复制
$(document).ready(function() { });
票数 0
EN

Stack Overflow用户

发布于 2011-06-25 20:13:36

watermark函数在DOM准备好操作时声明(在$(document).ready(function()中,因此在包含index.js时将不可用)。

编辑:

您必须在准备好操作DOM之后调用watermark,因为它使用了DOM中的元素。一种解决方案是在$(document).ready(function()外部声明watermark函数,然后在$(function() { ($(document).ready()的简写)内从index.js调用它:

functions.js:

代码语言:javascript
复制
watermark = function(elemId, text, hoverClass, normalClass, parentId){ 
   // function logic
}

index.js:

代码语言:javascript
复制
$(function() {
   new watermark("footer_contact_name", "Name", "footer_form_text_active", "footer_form_text", "footer_form_field_1");
}
票数 0
EN

Stack Overflow用户

发布于 2011-06-25 20:13:42

您只需在加载DOM之后定义watermark()函数。您可以在$(document).ready()调用外部定义它,也可以将$(document).ready()调用嵌入其中,这样它将在加载DOM时执行,但在此之前可用。

例如:

代码语言:javascript
复制
watermark = function(elemId, text, hoverClass, normalClass, parentId) {
    $(document).ready(function() {
        /* ... */
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6477630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档