背景信息:
我有一个函数,当被调用时创建一个窗体中的选择列表并填充它。之后,脚本遍历列表中的选项并查找特定值。如果值在那里,脚本'选择'该选项。
问题:
由于是动态创建的列表和一些次非常大的,它需要一段时间来加载。发生这种情况时,脚本的第二部分(选择选项的部分)不会执行任何操作,因为选择列表尚未加载时间。
理念的解决方案:
什么是好的就是可以调用的函数在选择列表中的onload事件的第二部分(作为一个单独的功能)。但是选择列表不应该有一个onload属性。另一个想法是简单地加一个延迟,但有一天延迟可能不够长。
预先感谢任何帮助Javascript:脚本需要等待一个元素加载
回答
好的,我终于解决了这个问题。解决方案与此处讨论的完全不同。基本上,我使用'新的选项(价值,文本)'添加选项到我的清单。我最终抛出了一个if语句,当一个值等于我所需要的是使用新的选项(值,文本,真)。并解决了这个问题。所有在一天的工作。
使用的延迟是不可靠的。无论您使用什么来填充选择列表,应该在完成时直接调用该函数。
交替:
由于没有“的onload”事件选择所有你能真正做到它有一个超时后调用自身的函数。如果选择列表中的项目长度已从零更改,则知道当前正在添加项目(起点)。如果已经到达起点并且在下一次超时后没有任何变化,您可以假定项目已经停止添加到列表中,因此您可以运行第二个功能。
这会是这样的: 1.设置超时 2.时间不足时调用一个函数,检查是否所有项目都已加载。 3.如果全部已经加载,运行功能2选择一个选项,否则设置超时并重复。 这是你的意思吗? – VinkoCM 2009-06-17 01:37:24
是的。当列表长度停止改变时,您可以知道所有项目都已加载。 – 2009-06-17 13:47:14
为什么你不做选择选项回调函数的功能。它将在创建列表的函数结束时调用。例如。
function createList(onComplete) {
// Create the list and maybe other tasks
onComplete();
}
注:可能不是这样的,但我认为你有这个想法......
你怎么做你的AJAX调用?大多数AJAX库将提供机制来成功完成回调。例如jQuery中:
$("#myList").load("ajax.url", function(){
//your content has been loaded, so you can do your selection logic here
});
如果手动&处理Ajax响应构建在JavaScript中的列表中,那么你已经有当列表完成一个知道的代码,所以你可以做的选择部分一旦完成,而不是一个单独的功能(如zyeming建议)。
如果这对你没有帮助,可能值得发布一些代码,这样人们可以给你一个更具体的答案。
- 1. 等待多个脚本以Javascript加载
- 2. 等待在javascript中加载元素
- 3. Javascript - 评估加载外部JavaScript的几个JavaScript需要等待
- 4. 等待脚本下载并执行,并等待DOM加载
- 5. Python硒:显式等待加载两个元素中的一个
- 6. 硒等待元素值加载
- 7. 等待脚本加载已通过javascript添加
- 8. 在缓存之前等待一个元素被加载
- 9. 加载脚本需要JS
- 10. 如何等待一个要加载的元素才能应用JQuery功能
- 11. 的脚本等待一个变量被加载,替代的setTimeout
- 12. 温泉Ui 2等待要加载的元素
- 13. 等待一个元素加载CSS选择器的识别元素
- 14. 如何添加一个等待方法等待,直到一个特定的元素加载在红宝石+ Cucumber2.0
- 15. 强制jQuery/Javascript等待php脚本加载
- 16. 等待元素
- 17. Angular 2 - 需要元素的脚本
- 18. 在执行脚本之前等待外部动态加载的脚本加载
- 19. 我需要一个通用的JavaScript“等待功能可用”
- 20. 等待一些加载的图像的执行脚本
- 21. 加载元素时需要隐藏块
- 22. 等待加载
- 23. 等待加载
- 24. 如何等待一个元素在JavaScript中定义?
- 25. 使Javascript等待HTML元素存在
- 26. 正确等待等待元素消失?
- 27. Shell脚本 - 不要等待阅读
- 28. 不要等待脚本完成
- 29. 等待窗口加载时不用等待存在的元素 - Watir Webdriver
- 30. 为什么我需要一个脚本加载器?
您是从服务器动态加载内容,还是由客户端上的本地javascript以编程方式生成内容。请澄清一点。 – SingleNegationElimination 2009-06-17 01:23:32
该列表从服务器动态填充AJAX。我所需要做的就是等待列表填充,但是添加延迟并不好,我也不能真正添加一个监听器。 – VinkoCM 2009-06-17 01:46:25