我正在构建一个需要与IE8兼容的javascript。在测试我的代码时,IE8会被我的开关绊倒。我没有任何好的文件,为什么它会这样做。所以,我要寻找的是一个很好的资源,或者回答为什么这个代码片段会被绊倒:
$div.attr('shippingtotal', price.trim());
switch (method.trim().toUpperCase()) {
case 'STANDARD GROUND':
$div.attr('value', 'UG');
break;
case 'THIRD DAY GROUND':
$div.attr('value', 'UTS');
break;
case 'SECOND DAY AIR':
$div.attr('value', 'US');
break;
case 'NEXT DAY':
$div.attr('value', 'UNN');
break;
}控制台错误表示它来自第40行,该行位于第三次中断。
发布于 2014-02-27 15:01:22
我认为你的switch没有问题。尝试使用if-else代替它,我相信您会得到同样的错误。
$div.attr('shippingtotal', price.trim());
var ucMethod = method.trim().toUpperCase();
if (ucMethod == 'STANDARD GROUND')
$div.attr('value', 'UG');
else if (ucMethod == 'THIRD DAY GROUND')
$div.attr('value', 'UTS');
else if (ucMethod == 'SECOND DAY AIR')
$div.attr('value', 'US');
else if (ucMethod == 'NEXT DAY')
$div.attr('value', 'UNN');或
var valueMap = {
'STANDARD GROUND': 'UG',
'THIRD DAY GROUND': 'UTS',
'SECOND DAY AIR': 'US',
'NEXT DAY': 'UNN'
};
$div.attr('shippingtotal', price.trim());
$div.attr('value', valueMap[method.trim().toUpperCase()]);不应依赖ie8错误消息。你应该写单元测试代替。我认为使用因果报应运行它们是可能的。我想jquery在ie8上有问题,但我不确定.
我认为ie8不支持trim()方法。您应该使用聚脂填充。
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g, '');
};
}发布于 2014-02-27 15:04:51
问题不在于切换,而在于String.prototype.trim的使用。它是未执行中的IE8,您需要填充它,或者使用一个包含trim函数的库,例如jQuery.trim。
https://stackoverflow.com/questions/22071748
复制相似问题