2017-09-29 4 views
9

Ich versuche, die gefüllten Daten mit der Div-ID zu bekommen, aber es wirft .handsontable .getData von Div-ID funktioniert nicht?

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

Ich habe den folgenden Code versucht, die gefüllten Daten zu erhalten:

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); 
*/ 


} 

Aber es ist Fehler zu werfen, sondern habe ich versucht, mit einer anderen Option:

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

Dies funktioniert. Aber ich habe mehrere Tabellen, also muss ich die Daten durch die bestimmte Tabelle mit der Div-ID bekommen, was ist das Problem in meinem Code?

+3

Haben Sie 'handsontable()' auf '# app' instanziiert? Was ist 'heiß'? Irgendwelche Fehler in der Konsole? Wir müssen viel mehr von Ihrem Code sehen, um Ihnen zu helfen. –

+0

haben Sie den Data Setter gemacht? –

+0

@RoryMcCrossan Beitrag bearbeitet. In der Konsole wird '$ container.data (...) ist undefined' Fehler angezeigt. – mkHun

Antwort

3

bekam schließlich die Antwort

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

Verwenden Sie .handsontable() anstelle von .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