2017-07-20 30 views
0

剣道グリッドを操作するには、グリッド上の特定のセルのデータをチェックするメソッドが必要です。セルが配置されている列名を返したい列には静的フィールド名がありますが、動的タイトルです。フィールド名に基づいてタイトルを取得する必要があります。.find()Jquery関数IE11ではサポートされていませんか?

コード:

function checkAllTemperatures(data) { 
    var columns = ['Temp1','Temp2','Temp3','Temp4','Temp5']; 
    var comment = ''; 

    for (var i = 0; i < columns.length; i++) { 
     comment += checkTemperature(data, columns[i]) + ', '; 
    } 

    //removes trailing comma and whitespace from comment 
    comment = comment.replace(/,\s*$/, ""); 
    setComment(data, comment); 
} 

function checkTemperature(data, columnName) { 
    var comment = ''; 
    var matlSpec = GetMaterialSpecs(data.ProductId); 
    var changedData = data[columnName]; 

    if(changedData > matlSpec.TemperatureUpperLimit || changedData < matlSpec.TemperatureLowerLimit) 
    { 
     var columnTitle = grid.columns.find(function(v, i) { return grid.columns[i].field == columnName; }).title; 

     comment = columnTitle + ' = ' + changeData; 
     CommonFunctions.OpenErrorWindow({message: 'Temp is out of specification!', Errors:'', errors:''}); 
    } 

    return comment; 
} 

コンソールで次のコマンドを実行し、Google Chromeでのデバッグ:正しいタイトルを返しますが、IE11で動作しているとき、私はこのエラーを取得grid.columns.find(function(v, i) { return grid.columns[i].field == "Temp1"; }).title

0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'find'

Dispiteを実際にプログラムのChromeを実行しているときにChrome Consoleで動作するコマンドでは、このエラーが発生します。

Uncaught ReferenceError: changeData is not defined

このコードが破損する理由:

1)剣道グリッドのためにJqueryが2回初期化されています。

2).find()が任意のアイデア

IE11

によってサポートされていない修正するには?

+0

2番目のエラーは、タイプミスのためです(changedDataを初期化した後、changeDataを使用しています)。 – Rienk

+0

最初のエラーは、 'grid.columns'がjQueryオブジェクトではなく通常の配列 – adeneo

+0

'find()'の代わりに 'filter()。pop()'を使うことができます。これはIE11(現代のすべてのブラウザ)でサポートされています。 – Werner

答えて

2

Array.findメソッドtowards the bottom of this pageのpolyfillを見つけることができます。 Array.findはIEではサポートされていません。エッジはそれをサポートしています。

関連する問題