ネストされたwith
ステートメントが 2 つあり、それぞれにcreateElemet
機能があります。IE9 を除くすべてのブラウザーで正しく実行されます。IE9 ではエラーも発生しません。何が問題なのですか?
コード:
with(block = document.createElement('div')){
with (detaildiv = document.createElement('div'))
{
alert('test');
}
}
ネストされたwith
ステートメントが 2 つあり、それぞれにcreateElemet
機能があります。IE9 を除くすべてのブラウザーで正しく実行されます。IE9 ではエラーも発生しません。何が問題なのですか?
コード:
with(block = document.createElement('div')){
with (detaildiv = document.createElement('div'))
{
alert('test');
}
}
技術的に言えば、問題は ie のバグです。
実際問題は、あなたが悪いコードを書いていて、ネストされたローカル スコープを作成しているということです。必要だからではなく、できるからです。結果として保守性とパフォーマンスに大きな打撃を与えます。
コメントで既に述べたように、非常に単純な解決策を見つけました
:内部sで直接
使用するwindow.document.***
代わりに使用します。document.***
with
with(block = document.createElement('div')) {
with (detaildiv = window.document.createElement('div')) {
alert('test');
}
}
また、コードをリファクタリングし、with
ステートメントを他の構造に置き換えることも検討する必要があります。