Javascript “如何修复”;停止运行此脚本?";注意这个代码?
运行此代码时,会显示警报Javascript “如何修复”;停止运行此脚本?";注意这个代码?,javascript,devexpress,Javascript,Devexpress,运行此代码时,会显示警报filtereditem是DevExpress列表框控件。 existingItems是一个包含247项的数组 function GetMessage(){ var deletedItems = ''; var count = existingItems.length; for (var i = 0; i < count; i++) { var item = existingItems[i].text; if
filtereditem
是DevExpress列表框控件。
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;
}
函数GetMessage(){
var deletedItems='';
var count=existingItems.length;
对于(变量i=0;iGetMessage
函数触发的,我可以给您以下建议:
此函数中有一个for
循环。这可能需要很长时间,有三个明显的原因
1) 循环的每次迭代都可能需要很长时间
2) 可能有太多的迭代,因此即使每个迭代只需要很短的时间,整个循环也需要很长的时间来执行
3) 这可能是因为,尽管循环的大多数迭代只需要很短的时间来执行,但循环变量i
中可能存在某些值,循环中的代码会冻结或花费很长时间
您可以使用JavaScript
getTime()
方法帮助自己确定您正在处理这三种情况中的哪一种 感谢大家提出的宝贵建议
我能够解决这个问题,问题是使用FindItemByText()方法,我用FindItemByValue()替换它,现在它工作正常。计数有多大?
FindItemByText()
在做什么?FindItemByText()是由devexpress的listbox控件公开的客户端方法,用于检查文本的存在。听起来脚本运行的时间太长了,你能用jScript调试器来看看为什么循环的每次迭代都要花这么长的时间吗,247循环不是大量的迭代,但是如果FindItemByText非常密集,那么这可能就是问题所在。对于长时间运行的循环,通常的解决方案是使用setTimeout()
重新构造代码,并回调基于超时的“循环”可能相关:您用于收集deletedItems的过程可能是二次时间,假设字符串连接是以标准方式实现的。使用数组并使用其联接方法,而不是逐段字符串连接。例如:[“你好”,“世界”].加入(“,”)