Tabelle bearbeiten, Schleife und Array

Hallo liebe ® Experten,
Ich suche schon den ganzen Nachmittag nach der Lösung
meines Problems. Ich habe Vieles probiert. Vielleicht
nur den falschen Ansatz?

Ich habe eine Tabelle wo jede Zelle einen Input:

Hier einen Auszug von 2 Zeilen meiner Tabelle:






Ich habe dann folgendes Script gebastelt aus
verschiedenen Beiträge im Internet:

<!–
function calculate ()

{
var cell2_1 =
document.getElementById(„cell2_1“).value;
var cell1_1 =
document.getElementById(„cell1_1“).value;
var cell3_1 =
document.getElementById(„cell3_1“).value;
var cell4_1 =
document.getElementById(„cell4_1“).value;
var cell5_1 =
document.getElementById(„cell5_1“).value;
var cell6_1 =
document.getElementById(„cell6_1“).value;
var cell7_1 =
document.getElementById(„cell7_1“).value;
var cell8_1 =
document.getElementById(„cell8_1“).value;
var cell9_1 =
document.getElementById(„cell9_1“).value;
var cell10_1 =
document.getElementById(„cell10_1“).value;
var cell11_1 =
document.getElementById(„cell11_1“).value;

var cell_sum1 = Number(cell1_1) + Number(cell2_1) +
Number(cell3_1) + Number(cell4_1) + Number(cell5_1)+
Number(cell6_1)+ Number(cell7_1)+ Number(cell8_1)+
Number(cell9_1)+ Number(cell10_1)+ Number(cell11_1);

document.getElementById(„cell_sum1“).innerHTML =
cell_sum1;

}
//–>


Das Script funktioniert gut aber nur für die Berechnung
der erste Zeile meiner Tabelle.
Ich will aber nicht jetzt für die 30 Zeilen jeweils so
in der Art auslesen und berechnen.
Ich habe also an einer Schleife und Array gedacht.
Aber irgendwie kriege ich dass nie hin.
Hier meine Schleife(ich habe zum Testen nur die ersten
3 Zellen der 3ersten Zeilen genommen):

<!–
function calculate ()

{var cell = new
Array(„cell1_1“,„cell2_1“,„cell3_1“,„cell_sum1“,
„cell1_2“,„cell2_2“,„cell3_2“,„cell_sum2“,
„cell1_3“,„cell2_3“,„cell3_3“,„cell_sum3“
);

i=0
while (i < 12){

cell[i] = document.getElementById("+ cell[i] +").value;

cell[i+3] =(cell[i]) +(cell[i+1])+(cell[i+2]);

document.getElementById("+ cell[i+3] +").innerHTML =
cell[i+3];
i=i+1

}
}
//–>


Ich habe auch schon versucht ohne „+ und +“ in den
Klammer von „getElementyId“ ohne Erfolg.

Wie kann ich dies besser machen?Ist mein Ansatz
überhaupt richtig?
Danke für jegliche Hilfe
Bboli

Hi
Dein Ansatz ist nicht wirklich gut.

Wenn du mir mal einen kompletten Quellcode schickst kann ich mir das mal angucken und dir eventuellen einen besseren Ansatz geben.

Gruß Lamer

PS: Email = [email protected]
PSS: In dem Quellcode den du hier gepostet hast kann man so kaum was schlussfolgern

Hi Lamer,
Unten hast du mein Code.

Im Code ist die Function calculate. Und es sollte so
sein dass sobald man eine Zahl eingibt in einer der
Zelle im Bereich"Celling" die Summe in der Spalte
„SummeCells“ erscheint(Im Code „cells_sum1“)
Diese Function ist aktuell nur für die erste Zeile
meiner Tabelle. Ich möchte aber eine Schleife machen um
die weiteren Zeile auch zu betrachten statt ein Mammut
Code.
Wie könnte dies funktionieren?

Danke
Schönen Sonntag
Gruß Bboli

Code:

Karte

/* Optional: Temporarily hide the „tabber“ class so it
does not „flash“
on the page as plain HTML. After tabber runs, the
class is changed
to „tabberlive“ and it will appear.
*/
document.write(’<style
type=„text/css“>.tabber{display:none;}</style>’);

var tabberOptions = {

/* Optional: instead of letting tabber run during the
onload event,
we’ll start it up manually. This can be useful
because the onload
even runs after all the images have finished
loading, and we can
run tabber at the bottom of our page to start it
up faster. See the
bottom of this page for more info. Note: this
variable must be set
BEFORE you include tabber.js.
*/
‚manualStartup‘:true,

/* Optional: code to run after each tabber object has
initialized */

‚onLoad‘: function(argsObj) {
/* Display an alert only after tab2 */
/* if (argsObj.tabber.id == ‚tab2‘) {*/
/* alert(‚Finished loading tab2!‘);*/
/* }*/
/* },*/

/* Optional: code to run when the user clicks a tab.
If this
function returns boolean false then the tab will
not be changed
(the click is canceled). If you do not return a
value or return
something that is not boolean false, */

‚onClick‘: function(argsObj) {

var t = argsObj.tabber; /* Tabber object */
var id = t.id; /* ID of the main tabber DIV */
var i = argsObj.index; /* Which tab was clicked (0
is the first tab) */
var e = argsObj.event; /* Event object */

if (id == ‚tab2‘) {
return confirm('Swtich to
‚+t.tabs[i].headingText+‘?\nEvent type: '+e.type);
}
},

/* Optional: set an ID for each tab navigation link
*/
‚addLinkId‘: true

};

<!–
function calculate ()

{ i=1
var cells2_1 = document.getElementById(„cells2_“ +
i).value;
var cells1_1 =
document.getElementById(„cells1_1“).value;
var cells3_1 =
document.getElementById(„cells3_1“).value;
var cells4_1 =
document.getElementById(„cells4_1“).value;
var cells5_1 =
document.getElementById(„cells5_1“).value;
var cells6_1 =
document.getElementById(„cells6_1“).value;
var cells7_1 =
document.getElementById(„cells7_1“).value;
var cells8_1 =
document.getElementById(„cells8_1“).value;
var cells9_1 =
document.getElementById(„cells9_1“).value;
var cells10_1 =
document.getElementById(„cells10_1“).value;
var cells11_1 =
document.getElementById(„cells11_1“).value;

var cells_sum1 = Number(cells1_1) + Number(cells2_1)

  • Number(cells3_1) + Number(cells4_1) +
    Number(cells5_1)+ Number(cells6_1)+ Number(cells7_1)+
    Number(cells8_1)+ Number(cells9_1)+ Number(cells10_1)+
    Number(cells11_1);

document.getElementById(„cells_sum1“).innerHTML =
cells_sum1;

}
//–>

Prozess1

Prozess1
Strom
celling
AnzS

∑cells
Time

120mV_50Ohm_100s

120mV_100Ohm_200s

120mV_150Ohm_200s

120mV_200Ohm_200s

120mV_250Ohm_250s

120mV_300Ohm_270s

/* Since we specified manualStartup=true, tabber will
not run after
the onload event. Instead let’s run it now, to
prevent any delay
while images load.
*/

tabberAutomatic(tabberOptions);

Hast eine Email als antwort…

Gruß Lamer

BBoli13 es tut mir leid dir sagen zu müssen das ich zurzeit leider keine Zeit habe um deine Frage zu beantworten. Bitte versuche es bei einem anderen Expteren oder in Foren deiner wahl.

viel erfolg weiterhin

Sorry - da ich momentan im Urlaub bin, kann ich dir leider nicht weiterhelfen…

Hallo BBoli

bin spät dran, aber falls es noch hilft, trotzdem eine
Antwort.

Ich bin aus Deinem Lösungsansatz und der Beschreibung
nicht so ganz schlau geworden; Du versuchst da auf mehr
Elemente zuzugreifen als Dein Array hat, das
getElementById ist total verkorkst, du solltest statt
while() eine for()-Schleife verwenden etc.pp. Wie lange
versuchst Du dich denn schon als Programmierer?

Ich vermute Du versuchst, die Werte der Felder „cell*“
aufzusummieren und nach cell_sum* zu schreiben. Nur was
hat das Feld „anzs*“ dabei für eine Bedeutung?

Eigentlich brauchst Du ja immer nur die Summe einer
Zeile zu bilden? Dann gib der Funktion die Zeilennummer
mit - oder gleich das geänderte Element:

  1. ändere den Event-Handler: onKeyUp=„calculate(this)“
  2. und den Funktions-Header
  3. in der Funktion zunächst Variablen initialisieren
    und aus der Element-ID die Zeilennummer ermitteln
  4. Schleife über alle Elemente der Zeile
  5. in der Schleife die Summe bilden
  6. und hinter der Schleife den Wert ins Ausgabefeld
    schreiben

das ganze sieht dann so aus:

function calculate (el)
{

 var i, sum=0, 
linenr=el.id.substring(4,el.id.indexOf('\_'));
 for (i=1; i