【发布时间】:2013-02-26 22:05:29
【问题描述】:
我想将字符串数组从服务器转换为客户端字符串,不使用 JSON 或外部库。
服务器端将String[] xArray = new String[] { "1", "2", "3" } 转换为"1, 2, 3" 用于客户端渲染。
以下 JavaScript 函数负责解析服务器字符串并将复选框与数组值进行比较。当匹配时,必须选中对应的复选框。
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 用于执行测试。
预期结果:拆分我的数组后,必须选中对应的复选框。
【问题讨论】:
-
您的代码示例与链接的 JSFiddle 不同...您帖子中的代码效果很好:jsfiddle.net/mjvLd/16
-
@mellamokb 小提琴实际上不起作用。请检查 cmets。对于不起作用的解决方案,它应该检查“9”和“133”复选框。
-
不,我的意思是它在功能上有所不同。您发布的代码中不存在 JSFiddle 代码中的错误。在 JSFiddle 中,您使用
ids[index]返回字符串的索引,而不是拆分数组。但这在上面的代码示例中是正确的,因为您将拆分数组存储在单独的变量idsArray中。如果要提供演示,则需要使用相同的代码。 -
JSFiddle 不接受 jsp 代码(scriptlet、EL 等)。你同意吗?上面的代码是我在代码中真正使用的,而 jsfiddle 是一个近似值。如果你能帮忙,我会很高兴的。
标签: java javascript checkbox