Есть такой кусок кода: результат if (RegExp.test(num)) каждый раз имеет значение TRUE в IE, но в Fire Fox, если в первый раз это True, во второй раз оно должно быть False, и появляется в дальнейшем поочередно. Давайте посмотрим на некоторые прошлые решения: Способ 1. Измените if (RegExp.test(num)) на if (num.match(RegExp)) Я не знаю, были ли они проверены. В любом случае, я пытался добиться эффекта совместимости, но не смог. На самом деле, самая фундаментальная проблема заключается не в том, какой обычный объект использовать, а в «g» в выражении, которое вызывает ошибку. Эффект в Firefox несовместим с IE. Firefox рассматривает RegExp как глобальную переменную, поэтому самый простой и эффективный способ — изменить var RegExp=/^(-)?[0-9]*$/g на var. RegExp=/^(-)?[0-9]*$/ , хорошее решение не заботится о сложности, но правильное решение В конце концов, такая ситуация встречается нечасто. функция isNum(num){ var RegExp=/^(-)?[0-9]*$/g;
Способ 2. Используйте обработку объекта RegExp, то есть новый RegExp("^(-)?[0-9]*$")
если (num.length == 0) {
вернуть ложь;
}
если (RegExp.test(num)){
вернуть истину;
}еще{
вернуть ложь;
}
}