首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >高效地将24k个条目加载到选择列表中

高效地将24k个条目加载到选择列表中
EN

Stack Overflow用户
提问于 2011-12-21 05:05:08
回答 3查看 268关注 0票数 1

我有一个经典的ASP页面,当加载时,它会调用另一个asp页面的javascript来检索要加载到我的框中的XML。它必须加载大约24k个选项;不用说,这相当麻烦。

它们并不都需要立即加载,只要页面不挂起,实际上是否需要一段时间加载都无关紧要。该页面需要在ie6+ (bummer)中工作。

我考虑过,当用户滚动经过一个给定的部分时,它将加载100多个部分,但是,找不到一个合适的属性来在ie6中为滚动条位置工作。我考虑使用onmouseover的特定选项(即“悬停更多结果...”)但是该事件不会触发。

如果有人能给我指出正确的方向,我将不胜感激。:>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-23 22:24:13

对于任何使用下拉框做这件事的人来说,唯一能让它不锁住浏览器的方法就是使用setTimeouts。在chrome中,这运行得很好,但IE可以接受的最低超时是13MS左右,这确实会阻碍加载时间。最重要的是,我(个人)认为这是一个相当丑陋的解决方案…但我想,这总比锁定表单要好。

代码语言:javascript
运行
复制
var i = 0;
function doStuff()
{
// code to execute, ie, add items
i++;
if (i != end of loop)
{
setTimeout(doStuff, 1);
}
setTimeout(doStuff, 1);

我发现的另一个建议是通过使用代码片段或隐藏下拉框(简单地将style.display设置为"none")来避免回流,直到所有项都添加完毕。

票数 -1
EN

Stack Overflow用户

发布于 2011-12-21 05:12:38

您应该设置一个服务,使用类似于服务器端支持的存储将您的项目延迟加载到Select列表中。

如果我要尝试解决这个问题,我会沿着JsonRestStore路线走下去,使用Dojo Toolkit在需要时请求项,然后将它们填充到组合框/筛选选择中。

这里有一些给你的参考资料。

http://livedocs.dojotoolkit.org/dojox/data/JsonRestStore

下面是Filtering Select功能的演示。

作为最后一点,我可能会补充说,将所有这些加载到DOM中总是一个坏主意。你应该使用网格之类的东西,或者在他们输入的时候使用预测器来缩小范围。

我使用的是JsonRestStore,它为一个有大约500万个项目的网格提供动力。我所要做的就是在用户向下滚动页面时加载新项目。当它们滚动时,它检测到我需要从服务器中提取另外25个项目,这将启动一个新的查询,然后将其加载到网格中。

票数 1
EN

Stack Overflow用户

发布于 2011-12-21 05:11:23

我假设您所说的“选择列表”指的是HTML元素

代码语言:javascript
运行
复制
<select>
  <option>option 1</option>
  ...
  <option>option 24000</option>
</select>

简而言之,选择列表中超过10-15个选项是非常糟糕的可用性。因此,如果这是你的情况,你可能想要重新考虑交互作用,因为即使是火箭科学家也很难从24000个选项中找到并选择正确的选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8581974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档