问题示例。当内联运行时,结果与我预期的一样。但是当存储为变量时,它会跳过中间跨度元素。
// Inline RegExp
function getToggleClasses() {
var toggler = [],
elements = document.getElementsByTagName("*"),
i=0,
len = elements.length;
for (i; i < len; i++) {
if (/toggler/g.test(elements[i].className)) {
toggler.push(elements[i]);
}
}
document.getElementById('results').innerHTML += "<br />Inline: " + toggler.length;
}
// Variable
function getToggleClasses2() {
var toggler = [],
elements = document.getElementsByTagName("*"),
tester = /toggler/g,
i=0,
len = elements.length;
for (i; i < len; i++) {
if (tester.test(elements[i].className)) {
toggler.push(elements[i]);
}
}
document.getElementById('results').innerHTML += "<br />Variable: " + toggler.length;
}
标记:
<span class="toggler">A</span>
<span class="toggler">B</span>
<span class="toggler">C</span>
Given : 我知道没有理由使用 RegExp 进行这种比较,而且我也了解 jQuery 等库有多么出色。我也知道g
在这种情况下不需要。
我不明白为什么这两种方法应该返回不同的结果。