簡體   English   中英

indexOf導致IE中的錯誤; 在其他瀏覽器中工作

[英]indexOf causing error in IE; working in other browsers

編輯:我超級困惑。 我有網頁的本地副本,在其中我向JavaScript文件添加了“ indexOf”功能。 此頁面正在工作。 但是,我將更改推送到的實時站點上的頁面仍然收到indexOf錯誤。 此外,網站上使用完全相同的腳本的另一個頁面沒有出現任何錯誤。 giftFeatures [giftB]應該不會有問題,因為根據調試器,它一個數組。

這是問題頁面的URL

這是一個使用完全相同的腳本且沒有錯誤的頁面

這兩頁之間有什么區別,為什么第二頁可以工作,而第一頁卻不能呢? 這真讓我抓狂。


我將腳本附加到可在除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;
    }
}

您還應該檢查該問題 ,該問題有多種解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM