【问题标题】:Uncaught TypeError: object is not a function (anonymous function)未捕获的 TypeError:对象不是函数(匿名函数)
【发布时间】:2013-01-22 11:58:32
【问题描述】:

在我的开发人员屏幕中运行代码时出现错误,在您调用时在 php 页面中,或者 javascript 应该在消息旁边放置一个图标。在 IE 中它工作正常,但在 Chrome 和其他浏览器中得到:

  Uncaught TypeError: object is not a function jsfunctions.php:92
  dowarnerr jsfunctions.php:92
  AddIcons jsfunctions.php:180
  (anonymous function)

任何想法这是什么以及为什么?

------------------------------------jsfunctions.php-------- ----------------

function AddIcons()
{
  if (typeof(error)=='object') 
 {
  dowarnerr(error,'Error');
 }
 if (typeof(warning)=='object') 
 {
 dowarnerr(warning,'Warning');
 }
 }
function doerror(err, etype)
{
  msg = err.innerHTML;
  if (etype=='Error') {
    err.innerHTML = '<img id=icon src=/images/err.gif>' + msg;
                      }
  else {
    err.innerHTML = '<img id=icon src=/images/warning.gif>' + msg;
       }
}





function dowarnerr(obj, etype)
{
   if(typeof(obj.innerHTML) == 'string') {
   doerror(obj, etype);
   }
   else 
   {
   for (i = 0; i < obj.length; i++) {
   doerror(obj(i), etype);
   }
   }
}





------------------------------------menu_config.php----------------------------------



<HEAD>
  <LINK REL="StyleSheet" TYPE="text/css" HREF="/styles.php"></LINK>
  <script language="JavaScript" src="/scripts/jsfunctions.php"></script>
</HEAD>

<SCRIPT LANGUAGE="javascript">
AddIcons();
</SCRIPT>

【问题讨论】:

  • 好吧,显然error(或warning)在AddIcons 中传递给dowarnerr 不是函数而是对象,因此dowarnerr 中的obj(i) 会引发错误。你只能调用函数,不能调用对象。

标签: php javascript jquery google-chrome


【解决方案1】:

如果传入 dowarnerr() 函数的第一个 arg 是一个对象,则不能使用 for (i = 0; i &lt; obj.length; i++) 语句。你必须使用 foreach:

for (var propName in obj) {
  if (obj.hasOwnProperty(propName)) {
    doerror(obj[propName], etype);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2012-09-08
    • 2017-05-15
    相关资源
    最近更新 更多