索引在IE中导致错误;在其他浏览器中工作

indexOf causing error in IE; working in other browsers

本文关键字:浏览器 其他 工作 IE 索引 错误      更新时间:2023-09-26

>编辑:我超级困惑。我有一个网页的本地副本,其中我将"indexOf"函数添加到javascript文件中。此页面正在工作。但是,我已将更改推送到的实时站点上的页面仍然收到 indexOf 错误。此外,网站上使用完全相同脚本的另一个页面没有收到任何错误。giftFeatures[giftB]应该没有问题,因为根据调试器,它是一个数组

这是问题页面的网址

这是一个使用完全相同的脚本且没有错误的页面

这两个页面有什么区别,为什么第二个有效,而第一个不起作用?这让我发疯。


我有一个脚本附加到一个页面,该脚本可在除IE(使用IE11(以外的所有浏览器中运行。这是不起作用的方法:

  buildComparisonData: function() {
  this.comparisonData = [];
  var giftA = this.selectedGifts[0];
  var giftB = this.selectedGifts[1];
  if(this.selectedGifts.length == 3)
   var giftC = this.selectedGifts[2];
  for(var i = 0; i < this.config.giftFeatureLabels.length; i++) {
    var label = this.config.giftFeatureLabels[i].feature;
    var checkimg = '<img src="https://www.giftcalcs.com/sites/all/modules/custom/pgc_giftcompare/check-mark.png">';
    var giftBChecked = this.config.giftFeatures[giftB].indexOf(i) < 0 ? '' : checkimg;
    var giftAChecked = this.config.giftFeatures[giftA].indexOf(i) < 0 ? '' : checkimg;
    if(this.selectedGifts.length == 3)
     var giftCChecked = this.config.giftFeatures[giftC].indexOf(i) < 0 ? '&nbsp;' : checkimg;
    var row = {
      label: label,
      giftA: giftAChecked,
      giftB: giftBChecked
    };
    if(this.selectedGifts.length == 3)
      row.giftC = giftCChecked;
    this.comparisonData.push(row);
    var comparisonLabels = {};
    comparisonLabels.giftA = this.getGiftLabel(this.selectedGifts[0]);
    comparisonLabels.giftB = this.getGiftLabel(this.selectedGifts[1]);
    if(this.selectedGifts.length == 3)
      comparisonLabels.giftC = this.getGiftLabel(this.selectedGifts[2]);
    this.comparisonLabels = comparisonLabels;
  }

它中断的线是

var giftBChecked = this.config.giftFeatures[giftB].indexOf(i) < 0 ? '' : checkimg;

它说"对象不支持属性或方法'indexOf'

该脚本在Chrome和Firefox中没有错误。我可以在giftFeatures[giftB]上获得indexOf,但在IE中却不能。

方法不存在时,您应该定义方法indexOf

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(obj, start) {
        for (var i = (start || 0), j = this.length; i < j; i++) {
            if (this[i] === obj) {
                return i;
            }
        }
        return -1;
    }
}

您还应该检查此问题,该问题有多种解决方案。

相关文章: