本地存储无法与for循环一起工作
Local storage not working issues with for loop
我使用本地存储允许用户在表单提交后返回表单,并在保留以前值的情况下进行修改。
我成功地使用了jQuery Storage Api(用于set()和get()),但只是为每个表单元素写出了长手,这并不理想。相反,我想将所有表单元素id推送到一个数组中,并在数组中循环。第一部分,推到数组,就像一个符咒,但我使用的for循环不起作用。
我打算使用jQuery.ech()函数,但首先想了解为什么我的循环不起作用。谢谢
(function() {
var selectArray = [];
// Getting select ids
$("select").each(function() {
selectArray.push($(this).attr("id"));
});
// Using Local Storage Api
var storage = $.localStorage;
for (var i = 0; i < selectArray.length; i++){
// Get select element
$("#" + selectArray[i]).val(storage.get(selectArray[i]));
// Set select element
$("#" + selectArray[i]).change(function() {
var selectValue = $("#" + selectArray[i]).val();
storage.set(selectArray[i], selectValue);
});
// Check loop is working
console.log(i + ". " + selectArray[i]);
}
}());
资源:
- jQuery v1.11.0
- jQuery存储API
只需像这样更改更改事件处理程序,就可以避免引用i。变量i在这里被挂起。
$("#" + selectArray[i]).change(function() {
var selectValue = $(this).val();
storage.set($(this).attr('id'), selectValue);
});
这应该行得通。
示例
您是对的,在变更处理程序函数中,您引用了循环变量"i"。当实际调用更改处理程序时,"i"将被取消引用,并且始终包含最后一个值:selectArray.length
相关文章:
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- 双“for”循环(循环)
- javascript for循环不起作用
- for循环中的javascript if语句找不到==
- Javascript在for循环中等待处理请求
- For循环在Jquery中只运行一次
- 如何在for循环中使用计数器
- for循环中的JavaScript闭包
- 为什么我们在ES2015中需要一个新的for循环结构,而我们已经有了for、forEach
- For循环在调用时未运行
- 如何使用for循环添加所有按钮'单击事件
- 如何更改在for循环中生成的圆的位置
- 为什么这个For循环会使浏览器实验室崩溃
- 为什么我使用javascript获得了一个无限的for循环
- 在for循环中使用多维数组设置google.maps.Marker图标
- 如何在angularJS中运行for循环而不使用html标记