如何获取div文本数组?

时间:2017-05-12 15:37:12

标签: javascript casperjs

我尝试在页面上获取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();

但它什么也没有返回。我错了什么?

2 个答案:

答案 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/>