【问题标题】:handsontable .getData by div id is not working?div id 的handsontable .getData 不起作用?
【发布时间】:2018-03-11 00:54:11
【问题描述】:

我正在尝试使用 div id 获取填充的数据,但它正在抛出 $container.data(...) is undefined

<!-- ... -->
    <div id="app" style="width: 500px; height: 200px;"></div>   
</div>
<button id="app_id" onclick="json()">Json</button>

我已经尝试了以下代码来获取填充数据:

var rowHead = colAr;
var colHead = dataObj[idname].col;
var data = [[]],
    container = document.getElementById("app"),
    selectFirst = document.getElementById('selectFirst'),
    rowHeaders = document.getElementById('rowHeaders'),
    colHeaders = document.getElementById('colHeaders'),
    hot;

hot = new Handsontable(container, {
    minRows:rowHead.length,
    minCols:colHead.length,
    startRows: 5,
    startCols: 5,
    rowHeaders: rowHead,
    colHeaders: colHead,
    contextMenu: false,
    outsideClickDeselects: false,
    removeRowPlugin: true
});
hot.loadData(data);

function json() {
    var $container = $("#app");
    var handsontable = $container.data('handsontable').getData();
    console.log(handsontable);
/*
    var htContents = hot.getData();
    var jsonObj = {};
    for (var i = 0; i < htContents.length; i++)
    {
    jsonObj[rowHead[i]] = htContents[i];
    }
    console.log(jsonObj);
*/  


}

但它抛出错误,而是我尝试了另一个选项:

var cont = hot.getData();
console.log(cont);

这是有效的。但是我有多个表,所以我需要使用 div id 通过特定表获取数据,我的代码有什么问题?

【问题讨论】:

  • 您是否在#app 上实例化了handsontable()hot 是什么?控制台中的任何错误?我们需要查看更多代码才能为您提供帮助。
  • 你做了data setter吗?
  • @RoryMcCrossan 帖子已编辑。在控制台中它抛出 $container.data(...) is undefined 错误。
  • 你需要把你的 jQuery 代码放在一个 document.ready 事件处理程序中
  • @RoryMcCrossan 我尝试了几种方法$().ready with $().click 都是与$container.data(...) is undefined 显示相同错误的方法。

标签: javascript jquery html handsontable


【解决方案1】:

终于知道答案了

 $('#app .ht_master tbody td').each(function(){
    var text = $(this).text();
 });

【讨论】:

    【解决方案2】:

    使用.handsontable() 而不是.loadData

    HTML:

    <div id="app"></div>   
     <a href="javascript:void(0)" id="app_id">Json</a>
    

    JAVASCRIPT:

    $(document).ready(function(){
    var data = [[]],
        container = document.getElementById("app"),
        hot;
    
    hot = {
            data:data,
        minRows:15,
        minCols:6,
        startRows: 5,
        startCols: 5,
        contextMenu: false,
        outsideClickDeselects: false,
        removeRowPlugin: true
    };
    
    $('#app').handsontable(hot);
    //hot.loadData(data);
    
    $('#app_id').on('click',function(){
    debugger
    var result = $('#app').data('handsontable').getData();
    });
    });
    

    Follow This Fiddle

    【讨论】:

      猜你喜欢
      • 2017-03-25
      • 2012-12-21
      • 2013-06-27
      • 2013-10-06
      • 2014-03-18
      • 2021-11-06
      • 2015-04-04
      • 2013-07-01
      • 1970-01-01
      相关资源
      最近更新 更多