我有 2 个嵌套with
语句,每个语句都有一个createElemet
函数,它在除 IE9 之外的所有浏览器中都能正常运行,在 IE9 中它甚至没有给出错误,这是什么问题?
编码:
with(block = document.createElement('div')){
with (detaildiv = document.createElement('div'))
{
alert('test');
}
}
我有 2 个嵌套with
语句,每个语句都有一个createElemet
函数,它在除 IE9 之外的所有浏览器中都能正常运行,在 IE9 中它甚至没有给出错误,这是什么问题?
编码:
with(block = document.createElement('div')){
with (detaildiv = document.createElement('div'))
{
alert('test');
}
}
从技术上讲,问题是ie中的一个错误。
实际上,问题在于您正在编写糟糕的代码,创建嵌套的本地范围是因为您可以,而不是因为您需要它 - 结果对可维护性和性能造成了很大影响。
正如我在评论中已经提到的,我找到了一个非常简单的解决方案:
使用window.document.***
而不是直接document.***
在内部使用with
:
with(block = document.createElement('div')) {
with (detaildiv = window.document.createElement('div')) {
alert('test');
}
}
您还应该考虑重构代码并用with
其他构造替换语句。