Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于复选框检查的Java字符串到JavaScript字符串数组_Java_Javascript_Checkbox - Fatal编程技术网

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

用于复选框检查的Java字符串到JavaScript字符串数组,java,javascript,checkbox,Java,Javascript,Checkbox,我希望不使用JSON或外部库,将字符串数组从服务器转换为客户机字符串。 服务器端将字符串[]xArray=新字符串[]{“1”、“2”、“3”}转换为“1、2、3”,用于客户端渲染。 下面的JavaScript函数负责解析服务器字符串并将复选框与数组值进行比较。当匹配时,必须选中相应的复选框 function loadCheckBoxes() { var ids = '<%= request.getSession().getAttribute("idsFromSe

我希望不使用JSON或外部库,将字符串数组从服务器转换为客户机字符串。 服务器端将
字符串[]xArray=新字符串[]{“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;
                }
            }
        }
    }
}
函数加载复选框(){
变量ID=“”;
如果(id!=null&&id!=''){
var idsArray=String.valueOf(ids.indexOf(',')==-1?[ids]:ids.split(',');
var复选框=document.getElementsByClassName('gridid');
对于(变量i=0;i=0){
var foundId=idsrarray[index];
if(复选框[i]。值==foundId){
复选框[i]。选中=真;
}
}
}
}
}
下面是一个用于执行测试的示例


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

解决方案中有两个问题:

  • 您应该在“
    ”、“
    上拆分,而不是在“
    ”、“
  • var
    foundId=ids[index]->应该是
    ids.split(',)[index]
:

函数checkSelected(){
var id=“9133”;
var idsArr=ids.split(“,”);
var复选框=document.getElementsByClassName('gridCheck');
对于(var i=0;i=0){
var foundId=idsArr[index];
if(复选框[i]。值==foundId){
复选框[i]。选中=真;
}
}
}
}

解决方案中有两个问题:

  • 您应该在“
    ”、“
    上拆分,而不是在“
    ”、“
  • var
    foundId=ids[index];
    ->应该是
    ids.split(',')[index];
:

函数checkSelected(){
var id=“9133”;
var idsArr=ids.split(“,”);
var复选框=document.getElementsByClassName('gridCheck');
对于(var i=0;i=0){
var foundId=idsArr[index];
if(复选框[i]。值==foundId){
复选框[i]。选中=真;
}
}
}
}

您的代码示例与链接的JSFIDLE不同……您帖子中的代码非常有用:@mellamokb小提琴实际上不起作用。请检查注释。对于不起作用的解决方案,它应该检查“9”和“133”复选框。不,我的意思是它在功能上是不同的。JSFIDLE代码中有一个错误,而您发布的代码中没有。在JSFIDLE中,您使用
ids[index]
返回字符串的索引,而不是分割数组。但这在上面的代码示例中是正确的,因为分割数组存储在一个单独的变量中,
idsArray
。如果要提供演示,它需要使用相同的代码。JSFiddle不接受jsp代码(scriptlet、EL等)。你同意吗?上面的代码是我在代码中真正使用的代码,而JSFIDLE是一个近似值。如果你能提供帮助,我会喜欢。你的代码示例不同于链接的JSFIDLE…你文章中的代码非常好:@mellamokb thefiddle实际上不起作用。请检查注释。对于不起作用的解决方案,它应该检查“9”和“9”“133”复选框。不,我的意思是它在功能上是不同的。JSFIDLE代码中有一个错误,而您发布的代码中没有。在JSFIDLE中,您使用
ids[index]
返回字符串的索引,而不是分割数组。但这在上面的代码示例中是正确的,因为分割数组存储在一个单独的变量中,
idsArray
。如果要提供演示,它需要使用相同的代码。JSFiddle不接受jsp代码(scriptlet、EL等)。你同意吗?上面的代码是我在代码中真正使用的,而JSFIDLE是一个近似值。如果你能提供帮助,我会喜欢。+1,尽管我认为最好是修剪id值,而不是依赖分隔符始终在逗号后有一个空格。我会改为
。split(/,\s*/);
+1尽管我认为最好是修剪id值,而不是依赖分隔符在逗号后始终只有一个空格。我会改为
.split(/,\s*/);
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;
            }
        }
    }
}