将参数从 Javascript 传递到 jquery
Pass argument from Javascript into jquery
我希望能够将字符串传递给 scrapeSite 函数,以便将其添加到传递的文本变量中。
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' is not a function (evaluating 'this.evaluate')
Return 一个函数。还要检查函数在 运行 中的上下文。我假设 .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;
});
};
}
你有两个问题。
呼叫scrapeSite
在 scrapeSite
内部,您使用 this
来引用 casper
实例。如果你这样做,这表明你在这样的步骤中调用它:
scrapeSite.call(casper, passedtext);
评估是沙盒化的
casper.evaluate()
已被沙盒化。一切都必须显式传递:
function scrapeSite(passedtext) {
result = result + this.evaluate(function(passedtext){
...
}, passedtext);
}
我希望能够将字符串传递给 scrapeSite 函数,以便将其添加到传递的文本变量中。 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' is not a function (evaluating 'this.evaluate')
Return 一个函数。还要检查函数在 运行 中的上下文。我假设 .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;
});
};
}
你有两个问题。
呼叫scrapeSite
在 scrapeSite
内部,您使用 this
来引用 casper
实例。如果你这样做,这表明你在这样的步骤中调用它:
scrapeSite.call(casper, passedtext);
评估是沙盒化的
casper.evaluate()
已被沙盒化。一切都必须显式传递:
function scrapeSite(passedtext) {
result = result + this.evaluate(function(passedtext){
...
}, passedtext);
}