2012-01-06 29 views
2

運行此代碼時顯示警報。 DevExpress listboxcontrol filtereditem。 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

'count'有多大?什麼是FindItemByText()? – 2012-01-06 11:29:24

+0

FindItemByText()是由devexpress的列表框控件公開的客戶端方法,用於檢查文本的存在。 – 2012-01-06 11:33:59

+0

聽起來好像腳本運行的時間太長了,你可以使用jScript調試器來了解爲什麼循環的每次迭代需要這麼長時間,247循環不是大量的迭代,但如果FindItemByText相當密集,那麼可能會成爲問題。 – 2012-01-06 11:41:38

回答

0

感謝所有寶貴的建議。

我能解決這個問題,問題是FindItemByText() methos,我FindItemByValue(),現在它工作正常更換。

2

「停止運行此腳本?」警報通常會觸發,因爲某些腳本代碼需要很長時間才能執行。

假設警報由你給了代號爲GetMessage功能的invokation觸發,我可以爲您提供以下建議:

你在這個功能的for循環。有三個不同的原因,這可能需要很長時間。

1)循環的每次迭代可能需要很長時間。

2)可能有太多的迭代,因此即使每次迭代只需要很短的時間,整個循環也需要很長時間才能執行。 3)雖然大多數循環迭代只需要很短的時間來執行,但循環變量i可能有一些值,循環中的代碼會凍結或需要很長時間。

您可以使用JavaScript getTime()方法來幫助您確定處理這三種情況中的哪一種。 http://www.w3schools.com/jsref/jsref_gettime.asp