【发布时间】:2020-03-24 15:30:15
【问题描述】:
我正在创建一个支持 IE10-11 的布局。我的大部分函数都可以工作,但 .text jQuery 方法什么也不做。当我单击页面上的按钮时,某些元素的文本应根据传递给我的函数的参数而更改。代码:
const currenciesChars = new Map([
['rub', '₽'],
['usd', '$'],
['eur', '€']
])
const currenciesNote = new Map([
['rub', 'Руб'],
['usd', 'USD'],
['eur', 'EUR']
])
function changeCurrency(currency) {
$(".currency").text(currenciesChars.get(currency))
$(".currency-note").text(currenciesNote.get(currency))
}
changeCurrency('usd');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="currency"></div>
<div class="currency-note"></div>
控制台不会产生一个错误。但是,如果您将alert (123) 添加到该功能,则该功能有效,您可以验证这一点。
我的代码有什么问题?
【问题讨论】:
-
这些元素是什么?提供minimal reproducible example
-
Map在 IE10 中不受支持。new Map(arguments)is not supported in IE11. -
这很好。你填充了
Map吗?您是否没有告诉我们开发者工具控制台上的错误消息? -
你可以通过IE11访问jsfiddle.net/tz1w5gmx/1/embedded/result,css,html,js查看控制台查看
new Map(arguments)在IE11中不支持的效果。它应该为Map变量记录[object Object],为Map.get记录一个函数,然后为Map.get(key)调用的结果记录undefined。基本上,IE11 在使用参数调用时会创建一个空的Map。没有错误,只是空的:(。我没有带有 IE10 的 VM 可以方便地进行测试。 -
有关 IE11 中的解决方法,请参阅Map(iterable) alternative for IE 11
标签: javascript jquery internet-explorer