我想使用.fmBigTbl类获取表中所有td的文本。
当我进行硬编码时,使用no代替例如piElements
的td:nth-of-type(2)
。上面的作品,但当我使用变量而不是数字时,它会输出null。
如何遍历表格中的所有td?
piElements = 1;
var data;
var count = 5;
this.repeat(count, function() {
this.then(function() {
data = this.evaluate(function() {
return $('.fmBigTbl').find('td:nth-of-type('+piElements+').fmLblCell2').text();
});
this.echo(data);
piElements++;
});
});
最佳答案
evaluate
被沙箱化。内部(页面上下文)不能简单地访问外部范围(casper上下文)中的变量。您需要将piElements
明确传递给evaluate
:
data = this.evaluate(function(piElements) {
return $('.fmBigTbl').find('td:nth-of-type('+piElements+').fmLblCell2').text();
}, piElements);
从docs:
注意:参数和评估函数的返回值必须是一个简单的原始对象。经验法则:如果可以通过JSON序列化,那就很好。
或者您可以简单地使用
casper.fetchText
:data = this.fetchText('.fmBigTbl td:nth-of-type('+piElements+').fmLblCell2');