当我运行以下代码时,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
语句中给出了错误。所有这些代码都在页面已经加载时运行。为什么会这样?
答案 0 :(得分:4)
它是()
而不是[]
elem = document.getElementsByTagName(elem);
将getElementsByTagnName()
视为函数调用,这样您就不会忘记它使用()
。不要忘记使用开发人员控制台 F12 来发现这些问题。
答案 1 :(得分:3)
由于Joseph the Dreamer已使用document.getElementsByTagName[elem]
代替document.getElementsByTagName(elem)
,因此here已找到导致错误的错误。
但是此次调用domTools.searchInElements("p", /hello/);
可能会遇到另一个问题,因为它会与hello, helloo, hellos etc
匹配,因此您应该使用
domTools.searchInElements("p", /^hello$/)
或者只是另一个想法{{3}}。