Javascript: Inkrementieren Zähler-variable in Schleife

Ich bin mit Selenium und nodejs zum Durchlaufen einer html-Tabelle und Spiel ein string aus einem array den string in der Zelle.

Mein array sein könnte ["Name" "Adresse1", "Adresse2", "Address3",...] und den Wert in tr[1] wird versucht, eine übereinstimmung mit Arr[0], tr[2] mit Arr[1] usw..

Die html-Tabelle wird eine Zeile für jedes Element im array, aber wenn es keine Daten für, sagen wir, 'Adresse2' dann wird das nicht angezeigt.

In diesem Fall tr[3] finden, dass Sie nicht mithalten können mit Arr[3]. Anstatt sich zu tr[4], möchte ich sehen, wenn tr[3] entspricht mit Arr[4], dann Arr[5] usw. Die Elemente in der Tabelle wird immer in der gleichen Reihenfolge wie die Elemente in dem array, so dass ich keine Notwendigkeit für alle array-Elemente "unmatched".

Ich gepostet habe die ganze Funktion, falls es relevant ist, aber das Problem scheint sehr einfach zu sein, dass ich nicht bekommen kann "i = i - 1" tragen Sie den neuen Wert in die nächste Schleife iteration.

Habe ich bewiesen, dass ich in der Else-Abschnitt, und der Wert von i - 1 ist als würde ich erwarten, dass an diesem Punkt.

var retrieveData = function retrieveData(Arr){

j = 0

driver.findElements(webdriver.By.xpath("//*[@class='table-container']")).then (function(rows){

    rowCount = rows.length;
    console.log("Row count = " + rowCount);

}).then (function(fn){

    for (i = 1;i < rowCount + 1; i++){

        (function(i){

            var element = driver.findElement(webdriver.By.xpath("//div[@class='table-container']["+i+"]/div/strong/a"));

            element.getText().then(function(Type){

                var typefromArray = String(Arr[j].split(':')[0]);

                if (Type == typefromArray){

                    //Do something

                    j = j + 1;

                } else {

                    //Do something

                    i = i - 1 //My problem looks to be here, but may be in the transfer of this back up to the beginning of the loop       
                    j = j + 1;

                }

            });

        })(i);

    };

});

};

module.exports.retrieveData = retrieveData;
  • Sie haben die i = i - 1 im inneren des IIFE. Sie könnte auch i-- und j++.
  • Hi, danke für die schnelle Antwort! Ich möchte nur das verringern der Zähler, wenn der string nicht übereinstimmen (d.h. die If-Anweisung False zurückgibt). Wie kann ich die i = i - 1(oder i--), die außerhalb des Sonst?
  • Sie spiegeln den Umfang der i im (function(i){ Erklärung.
InformationsquelleAutor user7540600 | 2017-02-09
Schreibe einen Kommentar