0

我有 2 个嵌套with语句,每个语句都有一个createElemet函数,它在除 IE9 之外的所有浏览器中都能正常运行,在 IE9 中它甚至没有给出错误,这是什么问题?

编码:

with(block = document.createElement('div')){
    with (detaildiv = document.createElement('div'))
    {
        alert('test');
    }
}
4

2 回答 2

2

从技术上讲,问题是ie中的一个错误。

实际上,问题在于您正在编写糟糕的代码,创建嵌套的本地范围是因为您可以,而不是因为您需要它 - 结果对可维护性和性能造成了很大影响。

于 2012-09-01T11:07:34.860 回答
1

正如我在评论中已经提到的,我找到了一个非常简单的解决方案:
使用window.document.***而不是直接document.***在内部使用with

with(block = document.createElement('div')) { 
    with (detaildiv = window.document.createElement('div')) { 
        alert('test'); 
    } 
} 

您还应该考虑重构代码并用with其他构造替换语句。

于 2012-09-03T21:43:35.790 回答