2012-01-06 9 views
2

このコードを実行している間、警告が表示されます。 filtereditemは、DevExpressのlistboxcontrolです。 existingItemsは、247項目の配列です。"このスクリプトの実行を停止しますか?"このコードで警告しますか?

function GetMessage(){ 
    var deletedItems = ''; 
    var count = existingItems.length; 
    for (var i = 0; i < count; i++) { 
     var item = existingItems[i].text; 
     if (!filtereditem.FindItemByText(item)) { 
      if (deletedItems != '') { 
       deletedItems = deletedItems + ', ' + item; 
      } 
      else { 
       deletedItems = item; 
      } 
     } 
    } 
    return deletedItems; 
} 
+2

「カウント」はどのくらいですか? 'FindItemByText()'は何をしていますか? –

+0

FindItemByText()は、テキストの存在をチェックするために使用されるdevexpressのリストボックスコントロールによって公開されるクライアントサイドのメソッドです。 –

+0

これは、スクリプトがあまりにも長く実行されているように聞こえますが、jScriptデバッガを使用してループの各反復が長時間かかる理由を確認できますか?247ループは大量の反復ではありませんが、FindItemByTextがおそらく問題になるでしょう。 –

答えて

0

貴重なご意見ありがとうございます。

私は問題がFindItemByText() methosであり、私はFindItemByValue()と交換し、現在その作業罰金、これを修正することができています。

2

「このスクリプトの実行を停止しますか?」スクリプトコードの中には実行に長時間を要しているため、通常は警告がトリガーされます。アラートがあなたのためのコードを与えてくれたGetMessage機能のinvokationによってトリガーされると仮定すると

、私はあなたに、次の提案を提供することができます:

あなたは、この機能で forループを持っています。これには長い時間がかかる可能性がある3つの明確な理由があります。

1)ループの各繰り返しに時間がかかる可能性があります。

2)繰り返しが多すぎると、繰り返しが短くてもループ全体が実行に時間がかかります。

3)ループのほとんどの反復では実行にわずかな時間がかかりますが、ループ内のコードがフリーズしたり、非常に長い時間がかかるループ変数iの値がある可能性があります。

JavaScript getTime()メソッドを使用して、これらの3つのケースのどちらを処理しているかを判断できます。 http://www.w3schools.com/jsref/jsref_gettime.asp

関連する問題