【问题标题】:Java String to JavaScript String Array for Checkbox Checking用于复选框检查的 Java 字符串到 JavaScript 字符串数组
【发布时间】: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


【解决方案1】:

您的解决方案中有两个问题:

  • 你应该分开', '而不是','
  • var foundId = ids[index]; -> 应该是ids.split(', ')[index];

Working solution:

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;
            }
        }
    }
}

【讨论】:

  • +1 虽然我认为最好修剪 id 值而不是依赖分隔符在逗号后面总是有一个空格。
  • 我会改为.split(/,\s*/);
猜你喜欢
  • 2018-05-01
  • 2014-07-29
  • 2018-08-19
  • 1970-01-01
  • 2016-02-12
  • 1970-01-01
  • 2018-11-28
  • 2011-09-15
  • 2013-09-15
相关资源
最近更新 更多