我想将String数组从服务器转换为客户端String,不使用JSON或外部lib。
服务器端将String[] xArray = new String[] { "1", "2", "3" }
转换为"1, 2, 3"
以进行客户端呈现。
以下JavaScript函数负责解析服务器String并将复选框与数组值进行比较。匹配时,必须选中相应的复选框。
function loadCheckBoxes() {
var ids = '<%= request.getSession().getAttribute("idsFromServer") %>';
if (ids != null && ids !== '') {
var idsArray = String.valueOf(ids).indexOf(',') == -1 ? [ids] : ids.split(',');
var checkboxes = document.getElementsByClassName('gridIds');
for (var i = 0; i < checkboxes.length; i++) {
var index = idsArray.indexOf(checkboxes[i].value);
if (index >= 0) {
var foundId = idsArray[index];
if (checkboxes[i].value == foundId) {
checkboxes[i].checked = true;
}
}
}
}
}
这是测试执行的JSFiddle。
分割我的数组后的预期结果:,必须选中相应的复选框。
答案 0 :(得分:4)
解决方案中存在两个问题:
', '
上分开,而不是','
foundId = ids[index];
- &gt;应该是ids.split(', ')[index];
function checkSelected() {
var ids = "9, 133";
var idsArr = ids.split(", ");
var checkboxes = document.getElementsByClassName('gridCheck');
for (var i = 0; i < checkboxes.length;
var index = idsArr.indexOf(checkboxes[i].
if (index >= 0) {
var foundId = idsArr[index];
if (checkboxes[i].value == foundId) {
checkboxes[i].checked = true;
}
}
}
}