2016-07-10 3 views
1

У меня есть код, и я бы хотел передать переменную снаружи, чтобы я мог оценить другую страницу и ввести код с предыдущей страницы.Передача глобальной переменной с одной оцененной страницы на другую

Я не эксперт здесь, и я просто не понимаю концепцию. Может ли кто-нибудь помочь мне понять, что я делаю неправильно?

var scheduleArray = []; 

//blah blah removed code...everything works up to this point 

casper.thenEvaluate(function(scheduleArray){ 

    console.log("##Your schedule is " + document.querySelector('form + div table').textContent); 
    var rawSchedule = document.querySelector('form + div table').textContent; 
    scheduleArray = rawSchedule.match(/((Monday)|(Tuesday)|(Wednesday)|(Thursday)|(Friday)|(Saturday)|(Sunday))([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4})((5)|(C6)|(6)|(7H)|(7F)|(715)|(8F)|(10F)|(12F)|(1F)|(2H)|(C2)|(2))/gi); 
    console.log("##scheduleArray"); 
    console.log(scheduleArray); 

    for (i=0;i<scheduleArray.length;i++){ 
     console.log(scheduleArray[i]); 
    } 


},scheduleArray); 

casper.then(function(scheduleArray){ 
    console.log("##scheduleArray"); 
//This loop contains no data 
    for (i=0;i<scheduleArray.length;i++){ 
      console.log(scheduleArray[i]); 
     } 
},scheduleArray); 

ответ

0

Я пишу небольшой пример кода для вас, чтобы показать, как проходит результат между оценки и Каспер сценария:

var casper = require('casper').create({ 
    verbose: true, 
    logLevel: 'debug' 
}); 

var array = [] 

casper.start('http://www.ecma-international.org/memento/TC39.htm'); 

casper.then(function() { 
    array = casper.evaluate(function() { 
     var nodes = document.querySelectorAll('a') 
     var result = Array.prototype.map.call(nodes, function (div) { 
      return div.href 
     }) 
     return result 
    }); 
}); 

casper.then(function() { 
    casper.echo(array.length); 
    casper.echo(array.join("\n")) 
}) 

casper.run() 

Выход:

22 
http://www.ecma-international.org/default.htm 
http://www.ecma-international.org/contact/contact.html 
http://www.ecma-international.org/sitemap/ecma_sitemap.html 
http://www.ecma-international.org/memento/index.html 
http://www.ecma-international.org/activities/index.html 
http://www.ecma-international.org/news/index.html 
http://www.ecma-international.org/publications/index.html 
http://www.ecma-international.org/memento/history.htm 
... ignore some lines 

, гряди к вашему коду:

  1. Изменение аргумента evaluate не принимает эти изменения для вашей глобальной переменной. То есть, что вы делаете с scheduleArray внутри evaluate, глобальная переменная scheduleArray остается неизменной.

  2. Внутри evaluate, вы должны использовать console.log для входа, но вне evaluate, вы должны использовать casper.echo.

+0

Спасибо за ваш ответ, однако scheduleArray еще не возвращает результат :( – user6571666

+0

@ user6571666 Извините за это ... Я буду проверять его снова часами позже ... – Sayakiss

+0

@ user6571666 отредактировать мое решение, чувствовать – Sayakiss

 Смежные вопросы

  • Нет связанных вопросов^_^