Windows 7/10上IE上的Javascript无法正常工作

Windows 7/10上IE上的Javascript无法正常工作,javascript,babeljs,polyfills,Javascript,Babeljs,Polyfills,因此,出于某种原因,我使用的JavaScript在IE上不起作用-我将在下面指出一些错误。如果有人知道我可以尝试的其他东西,或者知道我如何操作代码以使其更加IE友好,我将非常感激 以下是我采取的步骤: -使用https://babeljs.io/将整个页面转换为ES2015。 -从https://polyfill.io/ 下面有很多代码(我已经用Babel转换了整个general.js文件(如果你想让我上传原始general.js文件,请告诉我)): rtd3确认功能下面的所有内容都应该是:

因此,出于某种原因,我使用的JavaScript在IE上不起作用-我将在下面指出一些错误。如果有人知道我可以尝试的其他东西,或者知道我如何操作代码以使其更加IE友好,我将非常感激

以下是我采取的步骤:
-使用
https://babeljs.io/
将整个页面转换为ES2015。
-从
https://polyfill.io/

下面有很多代码(我已经用Babel转换了整个general.js文件(如果你想让我上传原始general.js文件,请告诉我)):

rtd3确认
功能下面的所有内容都应该是:

for (var inputElement of rtd3ChangeClass) {
    inputElement.addEventListener('change', rtd3Confirmation);
}
但那是在巴贝尔转换它之前

“严格使用”;
//表单包装器变量
var contactFormID=document.getElementById('contactForm');
var formWrapperSpecific=document.getElementById('form-wrapper-specific');
var formWrapperCertainSelection=document.getElementById('form-wrapper-special-selection');
var formwrappersecute=document.getElementById('form-wrapper-seute');
var formWrapperConfirm=document.getElementById('rtd3Confirm');//警报变量
var stateAlertID=document.getElementById('stateWarning');
var stateQuery=document.querySelector('stateWarning b#stateName');
var-resident=document.getElementById('resident');
var is_submitted=document.getElementsByClassName('is-submitted');//知情权变量
var rtk5_selection=document.getElementById('rtk5');
var rtk5declaration=document.getElementById('rtk5declaration');//删除变量的权利
var rtdChange=document.getElementById('rtd3');
var rtd3ChangeClass=document.querySelectorAll(“.rtd3_change”);//状态数组
变量状态=[];//加载DOM后,调用函数
document.addEventListener('DOMContentLoaded',函数(){
formHandler();
residentAlert();
rtdCheckboxSelection();
rtd3确认();
RTK5声明();
获取_states();
}); // 显示/隐藏窗体,具体取决于下拉选择时数组中是否包含状态
函数formHandler(){
contactFormID.style.display='block';
如果(常驻==null)返回;
如果(!states.includes(resident.value))contactFormID.style.display='none';
常驻.addEventListener('change',formHandler);
}//显示/隐藏非居民的状态警报
函数residentAlert(){
如果(常驻!==null){
常驻.addEventListener('change',函数(){
//如果states数组中的值为true,则显示表单
如果(!states.includes(常驻值)){
stateAlertID.style.display='block';
stateQuery.textContent=resident.options[resident.selectedIndex].text;
}否则{
stateAlertID.style.display='none';
}
});
}
}//根据PHP变量显示状态下拉列表
函数get_states(){
var data_states=contactFormID.getAttribute('data-states').match(/\w{1,}/g);
数据状态forEach(函数(状态,i){
返回状态[i]=状态;
});
}//如果选择RTK5,则显示声明字段并设置必需的标记
函数rtk5Declaration(){
如果(!rtk5_selection.checked){
formWrapperSpecific.style.display='none';
rtk5declaration.removeAttribute(“必需”);
}否则{
formWrapperSpecific.style.display='';
rtk5declaration.setAttribute('required','required');
}
}
rtk5_selection.addEventListener('change',rtk5声明);//如果选择RTD3,则显示/隐藏更多复选框
函数rtdCheckboxSelection(){
FormWrapperSurvey.style.display=rtdChange.checked?“”:“无”;
document.querySelectorAll('[name=“rtd[checked]”)].forEach(函数(r){
返回r.addEventListener('change',rtdcheckbox选择);
});
}//如果选中rtd3中的至少一个复选框,则显示确认并使其成为必需
函数rtd3Confirmation(){
if(document.queryselectoral('.rtd3_change:checked').length){
formWrapperCertainSelection.style.display='';
formWrapperConfirm.required=true;
}否则{
formWrapperCertainSelection.style.display='none';
formWrapperConfirm.required=false;
}
}
var\u iteratorNormalCompletion=true;
var _diditorerror=false;
var _iteratorError=未定义;
试一试{
对于(var _iterator=rtd3ChangeClass[Symbol.iterator](),_step;!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=true){
var inputElement=_step.value;
inputElement.addEventListener('change',RTD3确认);
}
}捕捉(错误){
_didIteratorError=true;
_迭代器错误=错误;
}最后{
试一试{
if(!\u iteratorNormalCompletion&&u iterator.return!=null){
_return();
}
}最后{
如果(_diditorerror){
抛出迭代错误;
}
}

}
您的polyfill脚本标记是同步的(不是异步的),并且它是在您自己的脚本之前加载的吗?querySelectorAll不返回数组。您应该将其转换为数组,如
[…document.qsa('selector')].forEach
@laruiss不,虽然它确实不返回数组,但返回的节点列表支持
forEach
,请检查。@afuggini IE9+当然支持array.prototype。forEach@Frambot对因为SLE说:“[使用Babel]将整个页面转换为ES2015”,如果他们想支持IE,就不应该这样做。相反,他们应该转换为ES5。这是我在对这个线程的第一个评论中所说的……您的polyfill脚本标记是同步的(不是异步的),并且它是在您自己的脚本之前加载的吗?querySelectorAll不返回数组。您应该将其转换为一个数组,如
[…document.qsa('selector')].forEach
@laruiss Nope,虽然它实际上不返回数组,但返回的NodeLi