用于复选框检查的Java字符串到JavaScript字符串数组

Java String to JavaScript String Array for Checkbox Checking

本文关键字:字符串 数组 JavaScript Java 复选框 检查 用于      更新时间:2023-09-26

我想将字符串数组从服务器转换为客户端字符串,不使用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。

预期结果:在分割数组后,必须选中相应的复选框。

你的解决方案有两个问题:

  • 你应该分割', '而不是','
  • var foundId = ids[index]; ->应该是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;
            }
        }
    }
}