2017-05-31 3 views
1

Meine Tabellenzeilen werden dynamisch generiert, wenn ich auf die Schaltfläche "+" klicke. Wenn ich die Felder bearbeite und auf "Senden" (neben "+") klicke, wird mein JSON auf der Konsole angezeigt, wie in der Abbildung unten gezeigt.Konvertieren von HTML-Tabellendaten in JSON mithilfe von javascript/jquery

HTMLtoJSON

Wenn ich JSON erzeugen, möchte ich die Zeile auszuschließen, die (in diesem Fall 3. Reihe) nicht gefüllt ist. Außerdem möchte ich Spalte 1 (die aus 3 Schaltflächen besteht) ausschließen.

Wie können wir die JSON-Daten, die aus vielen „\ n“ und \ t“sehen, das ist ärgerlich.

Ich schrieb Code gefolgt von einigen der Seiten Stack-Überlauf bezieht.

function createJSON(){ 

var myJSON = { Key: [] }; 

var headers = $('table th'); 
$('table tbody tr').each(function(i, tr){ 
    var obj = {}, 

    $tds = $(tr).find('td'); 

    headers.each(function(index, headers){ 
    obj[$(headers).text()] = $tds.eq(index).text(); 
    }); 

    myJSON.Key.push(obj); 
}); 

console.log(JSON.stringify(myJSON)); 

} 

Antwort

2

die Zeilen, die nicht gefüllt sind, haben <input> Elemente. Sie einen Selektor verwenden können, die sie ausschließt.

$('table tbody tr:not(:has(input))').each(...) 

Sie können von allen newline loszuwerden und andere Leerzeichen ch en Charaktere um die Überschriften mit .trim():

headers.each(function(index, headers){ 
    obj[$(headers).text().trim()] = $tds.eq(index).text(); 
}); 

der ersten Spalte zu überspringen, Sie :gt(0) in den Selektoren verwenden können:

var headers = $('table th:gt(0)'); 
var $tds = $(tr).find('td:gt(0)'); 
+0

Dank Barmar, das funktionierte aber wie springe ich die Spalte 1? JSON sieht immer noch so aus {"Key": [{":" "Feldname": "a", "Feldtyp": "Text", "Spezieller Felduntertyp": "USD", "Beschreibung" : "f"}]} –

+0

@AakashTakale USe ': gt (0)' in den Selektoren. – Barmar