Hallo,
ich baue mir in einer Schleife ein Array zusammen:
Der Code kurz zusammengefasst:
Gehe über alle Optionen (die 2. <tr>, da drin alle <td><input></td>) und hole dazu die passende Gruppe (1. <tr><input></tr>) und erzeuge daraus ein Array.
Das Array(topOptionsPerGroup) sieht im log des Firebug so aus: <siehe den kleinen Screenshot>
Wenn ich daraus einen JSON-String erzeuge, ist dieser leer.
Warum ?
- - - Aktualisiert - - -
Ich habe das ganze jetzt als Objekt gespeichert.
damit gehts.
Aber es wäre trotzdem interressant zu wissen, warum das als Array net geht.
Also wenn jemand ne Idee hat dann bitte posten.
Danke
ich baue mir in einer Schleife ein Array zusammen:
Code:
var topOptionsPerGroup = new Array();
var leftOptionsPerGroup = new Array();
var numAll = 0;
$.each($("table#logicalTable").find("td.options"), function() {
var option = toCamelCase($(this).find("input").val());
var groupNum = parseInt(numAll / optionsNum) + 1;
if ($(this).hasClass("topoptions")) {
var tdNum = groupNum + 2; // + 2, because there are 2 empty columns
var numPerGroup = (numAll % optionsNum);
var group = $(this).parent("tr").prev().find("td:nth-child(" + tdNum + ")").find("input").val().toString();
if (option !== "") {
if (typeof(topOptionsPerGroup[group]) == "undefined") {
topOptionsPerGroup[group] = new Array();
}
topOptionsPerGroup[group][numPerGroup] = option;
}
}
numAll++;
});
Der Code kurz zusammengefasst:
Gehe über alle Optionen (die 2. <tr>, da drin alle <td><input></td>) und hole dazu die passende Gruppe (1. <tr><input></tr>) und erzeuge daraus ein Array.
Das Array(topOptionsPerGroup) sieht im log des Firebug so aus: <siehe den kleinen Screenshot>
Wenn ich daraus einen JSON-String erzeuge, ist dieser leer.
Code:
JSON.stringify(topOptionsPerGroup) - dh. sowohl im log des Firebug steht nur "[]" und ein alert() gibt nur "" aus.
- - - Aktualisiert - - -
Ich habe das ganze jetzt als Objekt gespeichert.
Code:
var topOptionsPerGroup = {}; //Objekt statt Array
var leftOptionsPerGroup = {}; //Objekt statt Array
var numAll = 0;
var i = 1;
$.each($("table#logicalTable").find("td.options"), function() {
var option = toCamelCase($(this).find("input").val());
var groupNum = parseInt(numAll / optionsNum) + 1;
if ($(this).hasClass("topoptions")) {
var tdNum = groupNum + 2; // + 2, because there are 2 empty columns
var numPerGroup = (numAll % optionsNum);
var group = toCamelCase($(this).parent("tr").prev().find("td:nth-child(" + tdNum + ")").find("input").val()).toString();
if (option !== "") {
if (typeof(topOptionsPerGroup[group + "#" + i]) == "undefined") {
topOptionsPerGroup[group + "#" + i] = {}; //Objekt statt Array
}
topOptionsPerGroup[group + "#" + i][numPerGroup] = option;
}
} else if ($(this).hasClass("leftoptions")) {
// muss noch gemacht werden
}
numAll++;
});
Aber es wäre trotzdem interressant zu wissen, warum das als Array net geht.
Also wenn jemand ne Idee hat dann bitte posten.
Danke