0
HeaderA HeaderB HeaderA HeaderB
 stuff    232     hey     3434
 world    033     boy     221
 bat      435     girl    930

このテーブルは動的で、ライブで入力されます。これが私の JS コードですが、ロジックが正しく機能していません。2 列ごとに新しいレコードであることを伝え、4 列ごとに新しい行を作成する必要があります。これが私がこれまでに持っているものです:

function html_data(data) {
  var html = '';

  $.each(data, function (index, value) {
    if ((index+1) % 4 == 0 && index != 0) {
        html += '<td>'+value+'</td>';
        html += '</tr>'
    } else if ((index+1) % 5 == 0) {
        html += '<tr>';
        html += '<td>'+value+'</td>';
    } else {
        html += '<td>'+value+'</td>';
    }
        html += '</tr>';
  });

  return html;
}

明らかに、上記のコードは完全に間違っていますが、これまでのところこれだけです。mod ロジックを取得できれば、空白を埋めることができます。

4

2 に答える 2

0

私が何かを見逃していない限り、これを行うことができます:

if (index%4===0) { // start of a row
    html += '<tr>';
}
html += '<td>'+value+'</td>';
if (index%4===3) { // end of row
    html += '</tr>';
}
于 2013-09-05T21:09:30.383 に答える
0

これを試してくださいhttp://jsfiddle.net/G3JK5/

HTML

<table id="table">
    <tr>
        <th>HeaderA</th>
        <th>HeaderB</th>
        <th>HeaderA</th>
        <th>HeaderB</th>
        <th>HeaderA</th>
        <th>HeaderB</th>
    </tr>
</table>
<input type="button" id="btn" value="Add some random data" />

Javascript

//Sample usage
var tbl = new weirdTable('table');

document.getElementById('btn').addEventListener('click', function(){
    tbl.addData([
        parseInt(Math.random() * 100),
        parseInt(Math.random() * 100)
    ]);
});

変なテーブル

function weirdTable(tableId){
    var _me = null;

    var _currentIndex = 0;
    var _colCount     = 0;
    var _lastRowIndex = 0;

    var construct = function(tableId){
        _me = document.getElementById(tableId);
        _colCount = _me.rows[0].cells.length;
        _currentIndex = _colCount;
    };

    this.addData = function(data){
        var row = _me.rows[_lastRowIndex];

        //or var data = arguments;
        for(var i = 0; i < data.length; i++){
            if(_currentIndex >= _colCount){
                _lastRowIndex++;
                _currentIndex = 0;
                row = _me.insertRow(_lastRowIndex);
            }        

            row.insertCell(_currentIndex).innerText = data[i];
            _currentIndex++;
        }
    };

    construct(tableId);
}
于 2013-09-06T02:08:36.223 に答える