[英]Error occurred in Chrome but not Firefox
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>a demo page</title>
</head>
<body>
<script>
var formatNum=function(num)
{
if(!/^(\+|-)?\d+(\.\d+)?$/.test(num)){
return num;
}
var re = new RegExp().compile("(\\d)(\\d{3})(,|\\.|$)");
num += "";
while(re.test(num))
num = num.replace(re, "$1,$2$3")
return num;
}
alert(formatNum(1000000));
</script>
</body>
</html>
我使用这些代码来生成数字看起来像这样的1,000,000,它在Firefox中效果很好,但在chrome中不起作用
这是chrome中显示的错误Uncaught TypeError:无法调用未定义的方法“ test”,我该如何解决该错误
试试这个
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>a demo page</title>
</head>
<body>
<script>
var formatNum=function(num)
{
if(!/^(\+|-)?\d+(\.\d+)?$/.test(num)){
return num;
}
var re = new RegExp();
re.compile("(\\d)(\\d{3})(,|\\.|$)");
num += "";
while(re.test(num))
num = num.replace(re, "$1,$2$3")
return num;
}
alert(formatNum(1000000));
</script>
</body>
</html>
原因是chrome在调用compile()时未返回对已编译RegExp对象的引用。
因此,此行var re = new RegExp().compile("(\\\\d)(\\\\d{3})(,|\\\\.|$)");
将不起作用,而是需要遵循较不灵活的版本。
var re = new RegExp();
re.compile("(\\d)(\\d{3})(,|\\.|$)");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.