Javascript InternetExplorer-“;对象没有';“我不支持这种财产……”;

Javascript InternetExplorer-“;对象没有';“我不支持这种财产……”;,javascript,internet-explorer,object,onkeyup,Javascript,Internet Explorer,Object,Onkeyup,在onkeyup事件期间,我从位于父窗口中的Iframe调用位于父窗口中的Javascript函数。 IE发出抱怨,内置在IE8中的调试器停止并突出显示代码中的“if块”- “对象不支持此类属性或方法” PS-这段代码在FF中工作 <td class="grid" align="left"> <input type="text" name="invqty${topitem.itemIdentifier}-<c:out value = "1"/>"

在onkeyup事件期间,我从位于父窗口中的Iframe调用位于父窗口中的Javascript函数。 IE发出抱怨,内置在IE8中的调试器停止并突出显示代码中的“if块”- “对象不支持此类属性或方法”

PS-这段代码在FF中工作

     <td class="grid" align="left">
     <input type="text" name="invqty${topitem.itemIdentifier}-<c:out value = "1"/>"
        id="invqty${topitem.itemIdentifier}-<c:out value = "1"/>" 
        value="0" 
        onFocus="this.select()" 
        onkeyup="if(!parent.validateFloat(this.id)) { this.value = '0'; } 
                 else { parent.updateBalance(${topitem.itemIdentifier}); }">
     </td>


有人有什么想法吗

您的
名称
属性中有无效字符。有关有效字符的详细信息,请阅读。

是否以“文件:/”中的格式在本地运行此安装程序?那不行。IE对本地运行的文件的iframe通信有一个非常严格的安全模型。您需要通过web服务器运行它。

哇!!! 所以问题是-

我在iframe中定义了大约5个函数。 它们都发生在一个“脚本块”内

其中一个函数使用“for each”循环。这5个函数中的一个循环导致IE忽略了我执行此操作的整个“脚本块”。关键是IE8中的调试器告诉我问题出在某个伪造的行号上,这让我认为我的iframe和我如何定义JS函数存在问题。最后,我放弃了,去请有MAC电脑的人用Safari调试一下。Safari调试器使用for each循环确定了精确的行。我评论说,对于每个循环代码,IE也开始工作了

难以置信

IE8浏览器调试器的开发者应该因为他们的无能而受到严厉的惩罚。我在这上面浪费了3天。 对苹果公司的窥视值得称赞

这里的经验教训-

在编写Javascript时不要使用“for each”循环! 不要使用微软IE品牌的调试器!它们很可怕,会浪费你的时间


感谢您对Bergi和Nivas的帮助

name属性解析为带连字符的字母数字字符串(这是允许的)-即“invqty12345-1”,我认为这不是问题所在。您能否创建一个javascript函数,比如
doKeyUp(thisElement,itemIdentifier)
,在函数中放入以下内容:
if(!parent.validateFloat(thisElement.id)){thismelement.value='0';}else{parent.updateBalance(itemIdentifier);}
并使用
onkeyup
中的函数,如
onkeyup=“doKeyUp(this,${topitem.itemIdentifier})”
现在如果使用调试器,可能会得到失败的确切行。@Nivas-调试器突出显示“if(!parent.validateFloat(this.id))”-我知道它不喜欢这段代码。或者你是说问题可能在其他地方?你是否定义了
validateFloat
函数?是的-如果你认为它对你有帮助,我会在上面添加它。@Bergi-父级是我的iframe所在的主页面。我从我的iframe调用这个onkeyup事件。它们在同一个域上顺便说一句,这是在FF中工作的,所以我相信这是IE特有的。不-我有一个apache实例,我在每次构建后都会启动它。iframe与父项在同一个域上吗?@mafulu-是的,iframe在同一个域上。@Bergi-是的,我目前正在这样做。顺便说一句-我正在进行的代码更改已经完成ced在我们的测试服务器上为QA服务,他们也经历了同样的事情。所以这不是问题。