Javascript缓存工具和技术

时间:2013-02-21 18:05:59

标签: javascript jquery scriptaculous

我有一个要求,我想循环遍历页面上的所有DropDown(select)控件。我正在使用以下方法选择所有DropDown控件:

var DropDowns = document.getElementByTagName('select');

我遍历这些DropDowns,以编程方式设置一些选项:

for (i=0; i<= DropDowns.Length; i++)
{
    var CurrentControl = DropDowns[i];
    CurrentControl.options[CurrentControl.selectedIndex].value = 1;
}

是否有支持缓存的Javascript框架?我想缓存所有DropDown控件名称并循环遍历缓存的名称,而不是直接循环遍历Document对象。

是否有提高循环性能的技巧?

4 个答案:

答案 0 :(得分:1)

我不认为你会看到一个只循环30-40个元素的循环的性能有很大改进,但是一些浏览器会从循环中获得巨大的速度提升通过数组而不是NodeListHTMLCollection,因为在某些实现DOM级别1的浏览器中调用它。

因此,为了回答你的问题,你可以在一个数组中“缓存”对象等,它应该加速循环以便将来迭代。

请注意,您需要保持此阵列是最新的,因为它不像DOM那样“活动”。

答案 1 :(得分:0)

在jquery中,它看起来像这样:

var $menus = $('select');
$.each($menus, function(index, menu) {
    // Do whatever you want to the menu here
};

答案 2 :(得分:0)

我建议采用不同的方法 - 使用逗号分隔值将选项保存在隐藏字段中,并在页面加载时通过解析分隔值来设置控件值。

答案 3 :(得分:0)

我认为你已经比一些答案描述的更有效率了。请记住,您没有不断循环浏览文档,而是循环浏览NodeList DropDowns的缓存{{1}}。如果你想改变这些元素中的每一个,那么你将不可避免地需要遍历它们来单独改变它们。