为 null 或未定义,而不是函数对象
is null or undefined, not a Function object
>我有两个JavaScript函数:
function DisplayErrorMessage(fieldElement, messageElement, message) {
alert(fieldElement.name);
if(canFocus(fieldElement)){
//fieldElement.focus();
if(fieldElement.type =="text") {
fieldElement.select();
}
}
messageElement.style.backgroundColor='red';
messageElement.innerText = message;
}
以及调用此函数的函数:
function CheckForm(obj, optMsgDiv) {
if(obj != "") {
return true;
} else {
if(optMsgDiv != "") {
var messageObj = document.getElementById(optMsgDiv);
var clearObj = document.getElementById("refUpdMethod");
var message = getErrorMsg();
DisplayErrorMessage(clearObj, messageObj, message);
}
}
return false;
}
在一个构建中,它工作得很好,但是在我的主构建中,我得到了错误:属性"显示错误消息"的值为 null 或未定义,而不是函数对象。
您在哪里看到此错误消息?在某些 IDE 中还是在浏览器中?
看起来找不到显示错误消息函数。如果它和CheckForm都在同一个js文件中,这有点奇怪,也许还有其他一些代码使解析失败。
如果它们位于不同的文件中,请确保这些文件由 Web 服务器正确提供。
若要避免此错误,请始终在使用资源之前验证资源是否可用:if('function' == typeof DisplayErrorMessage){ DisplayErrorMessage(...); }
或 if('function' != typeof DisplayErrorMessage) return;
。
此外,请避免将对象与空字符串进行比较。而不是obj != ""
使用'object' == typeof obj
.
更新:正如fsgale所说,也许文件以错误的顺序包含在内。若要避免此错误,请避免在加载 js 文件后立即执行代码。在文件正文中,只需定义函数和类,然后使用加载页面后执行的代码来实例化对象并执行函数。这样做可确保在代码运行时加载所有 js 文件,并使页面呈现速度更快。对于 jQuery,你可以这样做:
if('function' == typeof $)
$(document).ready(init);
function init(){
if('function' != typeof $) return;
// init my stuff
}
此外,如果可能,请始终在 HTML 文档的末尾包含 js 文件,就在 </body>
之前。
相关文章:
- 在javascript中调用函数/对象引用时,可容纳任何数据类型
- 访问函数对象的上下文属性|如何
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- 如何将函数对象从javascript传递到Polymer元素
- 为什么函数对象的实例没有继承函数原型属性
- 为什么我会从 JavaScript 函数返回一个命名函数(对象)
- 为什么实例构造函数指向最上面的函数构造函数对象
- 使用object.freeze()扩展函数对象-can't添加字段
- 为什么'这'与函数对象一起使用时会有不同的处理方式
- setTimeout()/setInterval()赢得't执行**我正在传递函数对象,而不是执行函数
- 为什么茉莉花间谍不't通过引用解析函数对象
- 在 mongo map 中调用外部 javascript 函数(对象)或减少上下文的可能方法
- 在 JavaScript 中为函数对象添加别名
- 在 Express JS 中从路由调用函数对象
- 函数对象的名称属性是什么
- 构造函数对象
- 节点.js - 从另一个函数/对象发出事件
- 声明函数是否会创建具有函数名称和分配给它的函数对象的变量
- 函数对象__proto__和原型属性
- 类仿真 - 模块模式与函数对象