首页 > 解决方案 > 如何将字符串转换为整数 javascript 以便它支持 ie 11?

问题描述

我的代码是这样的:

  setCol (param) {
    // missing forEach on NodeList for IE11
    if (window.NodeList && !NodeList.prototype.forEach) {
      NodeList.prototype.forEach = Array.prototype.forEach;
    }
    const allDates = document.querySelectorAll('.v-date-picker-table .v-btn .v-btn__content')
    const dates = this.availableDates.map(x => parseInt(x.split('-')[2]))
    allDates.forEach((x, i) => {
      console.log(x.innerHTML) // example : 1, 2, 3, 4, 5 ,6 etc
      console.log(parseInt(x.innerHTML)) // in firefox, chrome, it works. it return value. example : 1. But in ie 11, it return NaN
      if (dates.indexOf(parseInt(x.innerHTML)) !== -1) {
        console.log('a')
      } else {
        console.log('b')
      }
    })
  },

此问题仅发生在浏览器中,即。我寻找参考并尝试这样:

parseInt(x.innerHTML, 10)

Number(x.innerHTML)

x.innerHTML * 1

但都是一样的,console.log(parseInt(x.innerHTML))回报NaN

我怎么解决这个问题?

标签: javascriptjqueryvue.jsinternet-explorerparseint

解决方案


JS Number Prototype 应该能够为您处理这个问题。我在 IE11 开发控制台中尝试了以下操作:

var numberString = "1234";
var toNumber = Number(numberString);
console.log(typof(toNumber));
// console.log result: "number"

所以这应该适用于你的例子。但我不知道你是否试图在你的代码中一次做太多的事情。我已经做了一个关于如何参数化的例子:) 让我知道它是否有效。

allDates.forEach((x, i) => {
      var innerString = x.innerHtml
      var numberFromInner = Number(innerString);
      if (dates.indexOf(numberFromInner) !== -1) {
        console.log('a')
      } else {
        console.log('b')
      }
    })

推荐阅读