所以我已经生成了这个表,每个单元格都有一个唯一的id,即r#c#,其中#是行/列。我有下面的代码从鼠标悬停时单元格的ID中提取行号和列号,它在firefox和chrome中工作正常,但在Internet Explorer中不起作用。
var cell_id = $(this).attr("id");
var matches = /[a-z]+(\d+)[a-z]+(\d+)/(cell_id);
var row = matches[1];
var col = matches[2];
为什么这不适用于资源管理器?
答案 0 :(得分:3)
在Internet Explorer中,正则表达式不能用作函数。等效的是exec()
方法,它是通过浏览器实现的。
var matches = /[a-z]+(\d+)[a-z]+(\d+)/.exec(cell_id);
<小时/> 感觉这个答案有点不完整,但没有提到Internet Explorer不是唯一一个不允许像函数一样执行正则表达式的浏览器。事实上,它是一个Mozilla扩展,它甚至没有在ECMAScript第3版或第5版中定义。您可以使用
typeof
运算符轻松检查是否支持它:
if (typeof / / == "function")
// Regex can be used like a function
else if (typeof / / == "object")
// Regex cannot be used like a function
我真的不明白为什么甚至要实现它,或者为什么你甚至想要检查它,最好只是谨慎一点并使用 exec 方法。< / p>