1

当我运行以下代码时,萤火虫控制台说 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 回答