javascript - 代码在 Internet Explorer 中不起作用的问题
问题描述
我正在使用一种适用于所有浏览器但不适用于 IE11 或 IE10 的代码
我该如何解决
$(`#${formID} textarea:not(.ctype)`).each(function(k) {
因为 ` 的使用似乎有问题,而且 IE 不喜欢它
解决方案
如果您想在 IE 中模拟模板文字,您可以做的最接近的事情是格式化字符串并用条目映射替换占位符值。
// Custom formatter function
function frmt(str, obj) {
return Object.entries(obj).reduce(function(acc, [key, val]) {
return acc.replace(new RegExp('\\$\\{' + key + '\\}', 'g'), val);
}, str);
}
// jQuery selector
const selector = frmt('#${formID} textarea:not(.ctype)', { formID: 'my-form' });
console.log(selector);
$(selector).each(function(textarea) {
console.log($(this).text());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="my-form">
<textarea>A</textarea>
<textarea>B</textarea>
<textarea class="ctype">C</textarea>
</form>
如果你想让代码可移植,你可以写一个 jQuery 插件:
// Custom selector plugin
(function($) {
$.sel = function(selector, repl) {
return $(Object.entries(repl).reduce(function(acc, [key, val]) {
return acc.replace(new RegExp('\\$\\{' + key + '\\}', 'g'), val);
}, selector));
};
})(jQuery);
$.sel('#${formID} textarea:not(.ctype)', { formID: 'my-form' })
.each(function(textarea) {
console.log($(this).text());
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="my-form">
<textarea>A</textarea>
<textarea>B</textarea>
<textarea class="ctype">C</textarea>
</form>
推荐阅读
- rxjs - 如何基于一个外部 observable 将多个 observable 组合在一起?
- jupyter-notebook - 如何检测是在 Jupyter Notebook 还是 Lab
- python - 在多列上合并两个熊猫数据框
- java - 在方法中将多个字符串作为参数时如何选择字符串极端情况?
- javascript - 有没有办法在我的 c# 程序中捕获 cefsharp 中的 javascript 引发的错误?
- swift - 为枚举创建实例后,如何为枚举创建带有打印功能的 switch 语句?
- elasticsearch - NEST dotnet core elastic 没有正确索引
- html - 为什么 Firefox 忽略自动边距以使项目居中?
- python - 领事监视不将 SIGTERM 传播到子进程
- python - 根据列和行条件填写二维数组对