string.match()仅在IE 8中求值为null

时间:2015-03-20 16:21:00

标签: javascript regex internet-explorer-8

我有一些有效的JavaScript代码可以在其他浏览器中运行,但不适用于IE 8 。它实际上是一段简单的代码,我真的无法弄清楚问题是什么?

简而言之,while部分永远不会在IE中执行(d.match(pattern)总是 null ),在所有其他浏览器中我得到正确的偏移量。

var ids = new Array(),
    d = o.innerHTML,                  // gets correct HTML code in all browsers
    pattern = /id="subblock_(\d+)"/,
    p;

while (d.match(pattern) != null) {

  // IE never gets here!
  p = d.search(pattern);
  ids[ids.length] = d.match(pattern)[1];
  d = d.substr (p+14);

  }

d 变量的值看起来像这样

<div id="subblock_0">...</div>
<div id="subblock_7">...</div>
<div id="subblock_59">...</div>

不确定,对我来说看起来很正确,但显然微软再次不同意我的意见。

注意:我已尝试使用IE 8以及Firefox,Chrome和Opera的最新更新!

1 个答案:

答案 0 :(得分:2)

我懒得启动虚拟机,但如果我没记错,IE8不会返回引号。一个简单的console.log(d)将验证。

pattern = /id="?subblock_(\d+)"?/,