在 jQuery/javascript 中访问动态命名数组
Accessing a Dynamically Named array in jQuery/javascript
我希望根据包含单击按钮的表行命名数组。
我得到表格行如下:
var rowNum = $(this).parent().parent().index();
现在,我希望命名数组并访问它。
var arrayName = 'arrTR' + rowNum;
window[arrayName] = new Array();
window[arrayName]["First"] = "Bob";
window[arrayName]["Last"] = "Roberts";
window[arrayName]["email"] = "me@there.com";
//The array should be accessible as arrTR__
alert(arrTR1["Last"]);
警报不起作用,所以我做错了什么。
我应该如何重构代码以允许我更新和访问数组?
js小提琴
你对动态命名变量所做的本质上是创建一个这些变量的数组(每个rowNum
一个),但为每个数组元素提供自己的单独命名变量。
有一个更好的方法可以做到这一点。与其生成一系列动态命名的变量,不如创建单个数组或对象。然后为要生成的每个动态命名变量添加一个元素或属性。
测试代码可能如下所示:
var arrTR = [];
var rowNum = 1;
arrTR[rowNum] = {
First: 'Bob',
Last: 'Roberts',
email: 'me@there.com'
};
alert( arrTR[1].Last );
或者,您可以按照 Johan 的回答中提到的$.data
做一些事情。但是,如果您确实使用纯 JavaScript 代码,请使用此处所述的单个数组,而不是多个动态命名的变量。
这样做有几个原因。它更干净,更容易理解代码,当有大量条目时可能会更快,并且您根本不需要污染全局命名空间。可以在对使用它的其他代码可见的任何范围内定义var arrTR = [];
。
数组和对象用于跟踪事物列表,因此请使用它们。
您的代码没有任何问题,唯一有错误的地方是警报,因为它不是在第一次单击按钮上定义的
看到这个小提琴,有一点更新
if(rowNum === 1)
alert(arrTR1["Last"]);
else if(rowNum === 2)
alert(arrTR2["Last"]);
小提琴
这样的事情怎么样?
$('.getinfo').click(function() {
var result = $('table tr:gt(0)').map(function(k, v){
return {
firstName: $(v).find('.fname').val(),
lastName: $(v).find('.lname').val(),
email: $(v).find('.email').val(),
}
}).get();
//update to show how you use the jQuery cache:
//1. set the value (using the body tag in this example):
$('body').data({ result: result });
//2. fetch it somewhere else:
var res = $('body').data('result');
});
不确定如何处理第一行。在这种情况下,我跳过。您可以通过 result[index]
访问每一行。
您可能已经注意到,这会保存每次单击的所有行。如果只想使用单击的行,请使用this
指针。
http://jsfiddle.net/nwW4h/4/
相关文章:
- 带有多个答案选项的Javascript动态数组窗口
- 在jquery中声明基于动态变量的动态数组
- 给出动态数组时出现 jsTree 错误
- 如何将元素添加到动态数组并排除现有元素
- Javascript关联动态数组
- 计算类元素的未知/动态数组长度
- AngularStrap Select和ng选项don'使用动态数组不能很好地工作
- 如何在Javascript中创建动态数组
- JavaScript 动态数组与对象和数组
- jQuery中的动态数组名称
- 如何映射输入字段的动态数组
- 在动态 JavaScript 对象(键/值对)中创建动态数组
- 如何将一个数组数据添加到多个动态数组中
- 构建菜单或组合框,数据存储在“动态”数组中
- 创建简单的动态数组
- AngularJS重复动态数组值
- 引导预类型不适用于从 php 页面检索的动态数组
- 基于用户在UI中输入的数字创建动态数组(绑定到网格)
- JavaScript-动态数组和循环
- 将ng单击绑定到动态数组上的ng重复