0

重複の可能性:
javascriptで例外をキャッチする方法は?

古いWebアプリケーションを変更しています。残念ながら、一部のレイアウト変更では生成されたコンポーネントがあり、合理的な解決策が見つからなかったため、「javascriptハック」を使用せざるを得ませんでした。ページの読み込みの最後にある私のテンプレートは、生成されたコンポーネントを変更するjavascriptファイル'layoutfixes.js'を読み込みます。生成されたコンポーネントはさまざまなIDを持っているか、まったく持っていないため、次のようにひどい方法で要素を取得する必要がありました。

var tdNodes = document.getElementById('tabbedPanel').childNodes[1].childNodes[0]. ... .childNodes[0];

しかし、私が言ったように、すべてのページにそれらのコンポーネントがあるわけではないので、上記のような行はエラーをスローし、その要素はnullです。そのような要素がページに存在するかどうかをチェックするために、どこにでも追加するものはありません。そのjavascriptに「try{}catch(Exception e){}」のようなものを追加することをお勧めします。しかし、私はjavascriptに十分精通していません。javascriptにはそのようなものがありますか?

4

4 に答える 4

1

ハックはあなたがそこでしていることの正しい言葉です。あなたはすでにハッカーの世界に精通しているので、try /catchで別のものを追加したほうがよいでしょう:

try {
  document.getElementById('tabbedPanel').childNodes[1]
}
catch ( ex ) {
 // do nothing
}

詳細はこちら:http ://www.w3schools.com/js/js_errors.asp

于 2013-01-10T13:20:59.357 に答える
1

Javascriptには確かにtry/catch実装があります:

try {
    // add code that can throw exceptions
}
catch (e) {
   // statements to handle any exceptions
}
于 2013-01-10T13:21:07.207 に答える
1

Javaスクリプトは例外処理をサポートしています。次のようにコーディングできます。

try {
    foo.bar();
} catch (e) {
    alert(e.name + ": " + e.message);
}

あなたはここでより多くの情報を見つけることができます:http ://www.w3schools.com/js/js_errors.asp

于 2013-01-10T13:23:38.633 に答える
1

他の回答が提案するようにTryCacheを使用できますが、特定のノードの子をトラバースしたいと思います。その場合、次のコードで問題を解決できます。

var tdNodes = document.getElementById('tabbedPanel');

for ( var i = 0; i < tdNodes.length; i++ ) {
  //do something with childNodes[i]
}

DOM(ドキュメントオブジェクトモデル)全体を参照する場合は、次のような再帰呼び出しを使用できます。

var tdNodes = document.getElementById('tabbedPanel');

function doSomethingWithNode( node ) {
  //process the node and do whatever you like

  //process all the children with a recursive call
  for ( var i = 0; i < tdNodes.length; i++ ) {
    doSomethingWithNode( childNodes[i] );
  }  
}
于 2013-01-10T13:26:16.223 に答える