Phantomjs更改页面评估中的对象属性

时间:2016-08-26 01:40:34

标签: javascript phantomjs

我是JavaScript和PhantomJS的新手。我试图从网页存储链接然后进行修改。问题是我无法在page.evaluate之后修改我的数组。

var player = 0;
var links = page.evaluate(function() {
    var a = document.querySelectorAll(".link[rel='nofollow']:not(#bg)");
    for(var i =0; i < a.length; i++) {
        array.push({
            "html":a[i].innerHTML,
            "link":a[i].href
        }
        );
    }
   return array;
});

//Not setting 1 as a value
links[player]["link"] = 1;

我认为它正在发生,因为我已经在执行该函数时设置了玩家值,但是我可以修改这个值吗?

1 个答案:

答案 0 :(得分:0)

您当前的代码会替换您要更改的实际数据的引用副本的副本。当然,这是行不通的。

如果您想更改页面上的属性/内容,则需要访问该页面并进行更改:

var player = 0;
page.evaluate(function(player) {
    var a = document.querySelectorAll(".link[rel='nofollow']:not(#bg)");
    a[player].href = "1";
}, player);

我不认为“1”是href值的合适值,但看起来这就是你想要做的。