2013-03-11 3 views
2

JSON 또는 외부 lib를 사용하지 않고 서버에서 클라이언트 문자열로 문자열 배열을 변환하고 싶습니다. 서버 측은 클라이언트 렌더링을 위해 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입니다.

내 배열을 분할 한 후 예상 결과 :, 해당 확인란을 선택해야합니다. 솔루션에

+1

귀하 코드 샘플 d 링크 된 JSFiddle에서 iffer ... 귀하의 게시물에 코드 위대한 작품 : http://jsfiddle.net/mjvLd/16/ – mellamokb

+0

@ mellamokb 실제로 바이올린 작동하지 않습니다. 의견을 확인하십시오. 작동하지 않는 솔루션의 경우 "9"및 "133"확인란을 선택해야합니다. – axcdnt

+0

아니요, 기능적으로 다른 것은 아닙니다. 게시 된 코드에 JSFiddle 코드에없는 버그가 있습니다. JSFiddle에서 split 배열이 아닌 문자열 색인을 반환하는'ids [index]'를 사용합니다. 그러나 분리 된 배열을 별도의 변수'idsArray'에 저장하기 때문에 위의 코드 샘플에서 맞습니다. 데모를 제공하려면 동일한 코드를 사용해야합니다. – mellamokb

답변

4

두 가지 문제 :

  • 당신이 ','
  • 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; 
      } 
     } 
    } 
} 
+0

+1 쉼표 뒤에 항상 정확히 하나의 공백이 있도록 구분 기호에 의존하는 것이 아니라 id 값을 잘라내는 것이 좋습니다. – mellamokb

+1

대신'.split (/, \ s * /);'할 것입니다. – leonbloy

관련 문제