Javascript 单击for循环中的事件| i值始终是最后一个值

Javascript 单击for循环中的事件| i值始终是最后一个值,javascript,phantomjs,casperjs,Javascript,Phantomjs,Casperjs,我是CasperJS的初学者 我想循环检查ul的所有li,然后单击每个li。单击li时,会弹出一个模式,并保存模式数据。但循环中的“i”值始终是结束值 我在ul有5个lis。 以下循环始终在第5个li上单击5次,并在单击第5个li时保存模式数据5次 casper.then(function() { a = lis.length; this.echo(a + ' lis found'); for(var i = 1; i <= a; i++ ) { this.echo(i

我是CasperJS的初学者

我想循环检查ul的所有li,然后单击每个li。单击li时,会弹出一个模式,并保存模式数据。但循环中的“i”值始终是结束值
我在ul有5个lis。
以下循环始终在第5个li上单击5次,并在单击第5个li时保存模式数据5次

casper.then(function() {
  a = lis.length;
  this.echo(a + ' lis found');
  for(var i = 1; i <= a; i++ ) {
    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));
    });
  }
});
casper.then(函数(){
a=利斯长度;
this.echo(a+'lis-found');

对于(var i=1;i将单击更改为单击解决了问题:)

casper.then(函数(){
a=利斯长度;
this.echo(a+'lis-found');
对于(var i=1;i
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
  }
});
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));
    });
  }
});