2016-07-10 10 views
1

Ich bin ein CasperJS Anfänger.Klicken Sie auf Ereignis in for-Schleife | i Wert ist immer der letzte Wert

Ich möchte alle li s einer ul durchlaufen und klicken Sie auf jeden li. Wenn Sie auf li klicken, erscheint ein modales Popup und speichert die modalen Daten. Aber der Wert von 'i' innerhalb der Schleife ist immer der Endwert.
Ich habe 5 lis in der ul.
Die folgende Schleife klickt immer 5 Mal auf die 5. li und speichert die modalen Daten 5 Mal, wenn 5. li angeklickt wird.

Ich googelte und fand heraus, wir sollten die Zuordnung des Ereignis-Listener in eine Schließung umbrechen. Aber das gibt nichts zurück.

casper.then(function() { 
    a = lis.length; 
    this.echo(a + ' lis found'); 
    for(var i = 1; i <= a; i++) { 
    (function(i){ // Added this line 
     this.echo(i + ' now'); 
     this.click('.hello:nth-child('+ i +')'); 
     casper.waitUntilVisible('.modal__content ', function() { 
     console.log('Open Modal'); 
     links = links.concat(this.evaluate(getLinks)); 
     }); 
    })(i); // Added this line 
    } 
}); 

Antwort

1

zu thenClick Ändern klicken löste das Problem :)

casper.then(function() { 
    a = lis.length; 
    this.echo(a + ' lis found'); 
    for(var i = 1; i <= a; i++) { 
    this.echo(i + ' now'); 
    this.thenClick('.hello:nth-child('+ i +')'); // Changed to thenClick from click 
    casper.waitUntilVisible('.modal__content ', function() { 
     console.log('Open Modal'); 
     links = links.concat(this.evaluate(getLinks)); 
    }); 
    } 
});