【问题标题】:How to form a JSON array using 1d array?如何使用一维数组形成 JSON 数组?
【发布时间】:2016-11-16 23:20:39
【问题描述】:

我正在使用github project 制作具有垂直和水平滚动的固定标题表。

我能够实现基本模板。如果我有一些隐藏的表头,我需要在将数据传递给函数的colModal 时进行一些更改。我已经做出了这些改变。但我无法复制(以匹配第一小提琴)发送到colModal 的数据。

HTML

<table id="mytable">
  <thead>
    <tr>
      <th style="width:40px;display:none">Head1</th>
      <th style="width:50px">Head2</th>
      <th style="width:60px">Head3</th>
      <th style="width:70px">Head4</th>
      <th style="width:80px">Head5</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="display:none">1</td>
      <td >2</td>
      <td >3</td>
      <td >4</td>
      <td >5</td>
    </tr>
       <tr>
      <td style="display:none">1</td>
      <td >2</td>
      <td >3</td>
      <td >4</td>
      <td >5</td>
    </tr>
       <tr>
      <td style="display:none">1</td>
      <td >2</td>
      <td >3</td>
      <td >4</td>
      <td >5</td>
    </tr>
       <tr>
      <td style="display:none">1</td>
      <td >2</td>
      <td >3</td>
      <td >4</td>
      <td >5</td>
    </tr>
       <tr>
      <td style="display:none">1</td>
      <td >2</td>
      <td >3</td>
      <td >4</td>
      <td >5</td>
    </tr>
  </tbody>
</table>

jQuery

var listWidth = $("#mytable tr th").map(function() {
  if ($(this).is(":visible")) {
    return this.style.width;
  }
}).get();
var viewData = {
  thsVisible: []
};
for (var i = 0; i < listWidth.length; i++) {
  var jsonData = {
    width: listWidth[i].slice(0, -2),
    align: 'left'
  };
  viewData.thsVisible.push(jsonData);
}
console.log(viewData);
$('#mytable').fxdHdrCol({
    fixedCols:  0,
    width:     "100%",
    height:    100,
    colModal: viewData
});

Template fiddle

colModal

colModal: [{width: 30, align: 'center'},
           {width: 70, align: 'center'}, 
           {width: 200, align: 'left'}, 
           {width: 100, align: 'center'}, 
           {width: 70, align: 'center'},               
          ]

Template fiddle when have hidden tds。如果您观察到,在这个小提琴中,第一个 td 是隐藏的,但它的宽度应用于第二个 td 和第二个 td's 宽度到第三个,然后它紧随其后,我试图避免使用上面的 javascript。所以我从没有隐藏的内联 css 中获取宽度。

Fiddle I struck with

收到Uncaught TypeError: Cannot read property 'width' of undefined 的错误。我需要将viewDataColModal 匹配。

【问题讨论】:

    标签: javascript jquery css json html-table


    【解决方案1】:

    请用这个 Jquery 试试

    var listWidth = $("#mytable tr th").map(function() {
      if ($(this).is(":visible")) {
        return this.style.width;
      }
      else{
      return "0px";
      }
    }).get();
    var viewData = {
      thsVisible: []
    };
    for (var i = 0; i < listWidth.length; i++) {
      var jsonData = {
        width: parseInt(listWidth[i].slice(0, -2)),
        align: 'left'
      };
      viewData.thsVisible.push(jsonData);
    }
    console.log(viewData);
    $('#mytable').fxdHdrCol({
        fixedCols:  0,
        width:     "100%",
        height:    100,
        colModal: viewData.thsVisible
    });
    

    希望它能解决问题。

    【讨论】:

      【解决方案2】:

      我认为是viewData 对象格式。

      库需要一个数组,而您要提供一个对象{ thsvisible: [] }

      试试var viewData = [0]viewData.push(jsonData);

      【讨论】:

      • 您还需要使用第一个元素初始化 viewData 对象,所以一切正常。 var viewData = [0];
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 2012-03-03
      相关资源
      最近更新 更多