2013-01-22 64 views
0

我在运行下面的代码时遇到了开发人员屏幕中的错误,当您调用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> 
+0

嗯,显然'error'(或'warning')传递给'dowarnerr'在'AddIcons'不是一个函数,但一个对象,因此在''OBJ(我)' dowarnerr'抛出一个错误。你只能调用函数,而不能调用对象。 –

回答

0

如果传入dowarnerr的第一个参数()函数是一个对象,你不能使用for (i = 0; i < obj.length; i++)声明。你必须使用的foreach:

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