我尝试在页面上获取div中的所有文本:
<div class="someclass">thistext</div>
这是我的代码:
var lnks = [];
function getLinks() {
lnks = document.querySelectorAll('.someclass');
return Array.prototype.map.call(lnks, function(e) {
return e.fetchText(lnks);
});
}
casper.then(function() {
var lnkss = this.evaluate(getLinks);
});
casper.then(function() {
for(var i in lnkss) {
console.log(lnkss[i]);
}
casper.done();
});
casper.run();
但它什么也没有返回。我错了什么?
答案 0 :(得分:1)
我从来没有使用过casper,但跳过一些你已经使用过的函数的文档,似乎你可能在一个没有定义的范围内调用fetchText()。
evaluate()说&#34;每当你将一个闭包传递给evaluate()时,你进入页面并执行代码就好像你使用浏览器控制台一样。&#34;
所以尝试更改
return e.fetchText(lnks);
到
return e.innerHTML;
看看它对你有什么影响。
答案 1 :(得分:1)
这可能会对你有所帮助。这将生成一组DIV文本。
var arr = [];
function makeDivTextArray() {
var divs = document.getElementsByTagName("div");
for(var i = 0; i < divs.length; i++) {
arr.push(divs[i].innerHTML);
}
}
makeDivTextArray();
for(var i in arr) {
document.write(arr[i] + "<br/>");
}
<div>text1</div>
<div>text2</div>
<div>text3</div>
<div>text4</div>
<div>text5</div>
<div>text6</div>
<div>text7</div>
<br/>