0

javascriptを使用して、アダルトノードの子をトラバースし、必要に応じてプロパティを変更しようとしています。コードはelemtree.tagNameでハングアップし、オブジェクトにそのプロパティがないことを示します。DOMプロパティを読みましたが、tagNameはDOMのプロパティであると述べられていました。なぜ認識されないのでしょうか?

以下のコード:

   elemtree = elem.firstChild;
    while (elemtree != null) {
        if (elemtree.tagName.toLowerCase() == "img") {
            elemtree.src = img;
        }
        else {
            elemtree.display = display;
        }
        elemtree = elemtree.nextSibling;
    }
4

2 に答える 2

2

elemtree.nextSiblingテキストノードとコメントノードが含まれますが、プロパティはありnodeNameません。tagName

ソリューション:

  1. elem.firstElementChild代わりにandを使用してくださいelemtree.nextElementSibling(ブラウザの互換性の問題の可能性があります)。
  2. nodeNameの代わりに使用してくださいtagName
  3. それを使用する前に存在することを確認してくださいtagName

    if (elemtree.tagName && elemtree.tagName.toLowerCase() == "img") {
    
于 2012-04-11T20:36:58.357 に答える
0

私はRobWに同意します。最善の解決策は、最初からプロパティのないノードを避けることですが、次の変更を検討することもできます。

if (elemtree.tagName.toLowerCase() == "img")

if (elemtree.tagName && elemtree.tagName.toLowerCase() == "img")

そうすれば、プロパティが存在しない場合でもエラーはスローされません。

于 2012-04-11T20:43:25.590 に答える