1

次のコードを実行すると、firebug コンソールに elem が未定義であると表示されますが、そうではありません!

var domTools = {};
domTools.searchInElements = function (elem, pattern) {
    if (pattern.constructor !== RegExp) {
        throw "Pattern must be a RegExp";
    }
    if (elem.constructor !== String) {
        throw "Element must be a String";
    }
    elem = document.getElementsByTagName[elem];
    var matches = [];
    for (e = 0; e < elem.length; e++) {
        if (pattern.test(elem[e].innerHTML)) {
            matches.push(elem[e]);
        }
    }
    return matches;
}
domTools.searchInElements("p", /hello/);

forステートメント中にエラーが発生します。このコードはすべて、ページが既に読み込まれているときに実行されています。なぜこうなった?

4

2 に答える 2

4

それ()はそうではない[]

elem = document.getElementsByTagName(elem);

getElementsByTagnName()を使用していることを忘れないように、関数呼び出しと考えてください()F12そして、開発者コンソールを使用してこれらの問題を発見することを忘れないでください。

于 2012-06-17T00:05:30.860 に答える
3

ジョセフ・ザ・ドリーマーは、document.getElementsByTagName[elem]代わりにdocument.getElementsByTagName(elem).

ただし、この呼び出しでは別の問題に直面する可能性がありdomTools.searchInElements("p", /hello/);ます。一致hello, helloo, hellos etcするため、使用する必要があります

domTools.searchInElements("p", /^hello$/)

またはここで別のアイデア。

于 2012-06-17T00:20:49.577 に答える