2

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です。

期待される結果:配列を分割した後、対応するチェックボックスをオンにする必要があります。

4

1 に答える 1

4

ソリューションの 2 つの問題:

  • ', '代わりに分割する必要があります','
  • 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;
            }
        }
    }
}
于 2013-03-11T16:35:03.630 に答える