用于复选框检查的Java字符串到JavaScript字符串数组
我希望不使用JSON或外部库,将字符串数组从服务器转换为客户机字符串。 服务器端将用于复选框检查的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
字符串[]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;
}
}
}
}