我插入值在二维数组根据我的role_id即
var tdarray = [[]];
tdarray[40].push(22);
其中40是我的role_id, 22是它的值。然而,当我打印这个值时,它显示null
alert(tdarray[40][0]); //this shows no value.
我猜二维数组在jquery中不允许在特定位置插入值。你能建议我怎么做才能克服这个吗?完整代码在这里
var tdarray = [[]];
var incr = 1;
var check;
$(function () {
$('.toggle_checkbox').change(function () {
if (check === null) {} else {
if (this.name == check) {
incr++;
} else {
incr = 1;
}
}
var tval = $(this).val();
check = this.name;
tdarray[this.name].push(tval);
});
});
Html代码
<table border = "0"
cellspacing = "0"
cellpadding = "1" >
<tbody>
<c:forEach items="${accessRightValues}" var="rights" >
<tr style="height: 40px;">
<td style="width: 240px;"><input type="checkbox" name="<c:out value="${rights.roleid}"/>" value="1" class="toggle_checkbox"> Add </td>
<td style="width: 240px;"><input type="checkbox" name="<c:out value="${rights.roleid}"/>" value="2" class="toggle_checkbox">Update</td>
<td style="width: 240px;"><input type="checkbox" name="<c:out value="${rights.roleid}"/>" value="3" class="toggle_checkbox">View </td>
<td style="width: 240px;"><input type="checkbox" name="<c:out value="${rights.roleid}"/>" value="4" class="toggle_checkbox">Delete </td>
<td style="width: 240px;"><input type="checkbox" name="<c:out value="${rights.roleid}"/>" value="5" class="toggle_checkbox">Assign </td>
</tr>
</c:forEach>
</tbody> < /table>
我的问题是id 40可以容纳一个以上的值。所以我想知道我如何能做到这一点使用多维数组在jquery。也可以有多个role_id,例如50,57,这将再次保存多个值。请帮我解决这个问题。我想把这个二维数组传递给弹簧控制器。tdarray [40] [0] = 1;tdarray [40] [1] = 3;tdarray [40] [2] = 5;tdarray [48] [0] = 2;tdarray [48] [1] = 3;
其中40,48是用户的role_id, 1,3,5是我想要存储在数据库中的access_rights
为了在key 40中使用push()
函数,您必须将该位置初始化为数组。
var tdarray = [];
tdarray[40] = [];
tdarray[40].push(22)
// It works now
alert(tdarray[40][0]);
在您提供的代码中:
var tdarray = [];
...
// Check if it's an array before initialize
if(!tdarray[this.name] instanceof Array) {
tdarray[this.name] = []; // or tdarray[this.name] = new Array();
}
tdarray[this.name].push(tval);
可能是显而易见的解决方案,但是如果您希望能够通过键(例如40)访问您的值,为什么不使用对象呢?
var tdarray = {};
if ( ! tdarray['40']) tdarray['40'] = [];
tdarray['40'].push(22)
你必须检查它是否已经是一个数组,如果它不是创建的
var tval = $(this).val();
check=this.name;
if( tdarray[this.name]constructor !== Array){
tdarray[this.name]=[]
}
tdarray[this.name].push(tval);