未捕获的类型错误:对象不是函数(匿名函数)


Uncaught TypeError: object is not a function (anonymous function)

我在开发人员屏幕中遇到错误,当您调用或javascript应该在消息旁边放置一个图标时,在php页面中运行代码。在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>

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

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