我在开发人员屏幕上运行下面的代码时遇到错误,当你打电话时在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 :(得分:0)
如果传递给dowarnerr()函数的第一个arg是一个对象,则不能使用for (i = 0; i < obj.length; i++)
语句。你必须使用foreach:
for (var propName in obj) {
if (obj.hasOwnProperty(propName)) {
doerror(obj[propName], etype);
}
}