将Javascript中的参数传递给jquery

时间:2015-02-15 00:37:36

标签: javascript jquery casperjs

我希望能够将字符串传递给scrapeSite函数,以便将其添加到passtext varible中。 Tried this but didnt work for me.

function scrapeSite(passedtext) {
result = result + this.evaluate(function(){
    var text = "";      
    $('.bottom_input_area tbody tr').each(function(){               
            text = text + $(this).find('td:nth-child(1)').text().trim() + ';;;;....';
            text = text + $(this).find('td:nth-child(2) a').text().trim() + ';;;;....';
            text = text + $(this).find('td:nth-child(3)').text().trim().replace(' :-','') + ';;;;....';
            text = text + passedtext + ';;;;....';
            text = text + '!!!!::::';
    });
    return (text);

}); 

}

casper.then(scrapeSite('sometext'));

一旦我试图将参数传递给我得到的函数:

  

TypeError:'undefined'不是函数(评估'this.evaluate')

2 个答案:

答案 0 :(得分:0)

返回一个函数。还要检查函数运行的上下文。我假设.then()函数将使用已定义this.evaluate()的已知上下文调用回调函数。否则,您可能需要查看.call().apply().bind()函数。

function scrapeSite(passedtext) {
  return function() {
    result = result + this.evaluate(function(){
      var text = "";      
      $('.bottom_input_area tbody tr').each(function(){               
        text = text + $(this).find('td:nth-child(1)').text().trim() + ';;;;....';
        text = text + $(this).find('td:nth-child(2) a').text().trim() + ';;;;....';
        text = text + $(this).find('td:nth-child(3)').text().trim().replace(' :-','') + ';;;;....';
        text = text + passedtext + ';;;;....';
        text = text + '!!!!::::';
      });
      return text;
    }); 
  };
}

答案 1 :(得分:0)

你有两个问题。

致电scrapeSite

scrapeSite内,您使用this来引用casper实例。如果你这样做,这表明你在这样的步骤中调用它:

 scrapeSite.call(casper, passedtext);

评估是沙箱

casper.evaluate()是沙箱。一切都必须明确传递:

function scrapeSite(passedtext) {
    result = result + this.evaluate(function(passedtext){ 
      ...
    }, passedtext);
}