【问题标题】:Pulling comment scores from Reddit, greasemonkey script从 Reddit、greasemonkey 脚本中提取评论分数
【发布时间】:2014-08-18 23:00:55
【问题描述】:

我正在寻找编写一个greasemonkey 脚本,我需要从每条评论中提取分数,以便之后添加我自己的风格。这是我现在拥有的:

reddit 源码如下(每​​个 cmets 都会出现)

<p class="tagline">
    <span class="score unvoted">16 points</span>

到目前为止,我正在尝试编写的 javascript 如下

var i, tags = document.querySelectorAll('.tagline');
for(i=0;i<tags.length;i++) {

    var pullVotes = document.getElementsByClassName('.score'); //gets an Object HTMLCollection
    var collectionPull = Array.prototype.slice.call(pullVotes); //My attempt to convert the HTMLCollection to an array
    var userVote = collectionPull[0];

    tags[i].innerHTML += "<span> ("+userVote+")</span>";
}

我得到“未定义”。我也知道我可以使用 reddit json,但我找不到一种方法从所有 cmets 中提取分数,只是从我设置的静态分数中提取。

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • I get "undefined"什么未定义?
  • 请编辑您的问题以包含源数据相关部分的示例
  • 为什么要将 HTML Collection 转换为数组?也许这个documentation of the HTMLCollection type 对你有帮助

标签: javascript jquery reddit


【解决方案1】:

首先,出了什么问题:

var pullVotes = document.getElementsByClassName('.score'); //gets an Object HTMLCollection

是的,它确实返回了一个 HTMLCollection 对象,但是您的行查找名为“.score”的类而不是“score”类,因此该行返回一个 empty 集合。

var collectionPull = Array.prototype.slice.call(pullVotes); //My attempt to convert the HTMLCollection to an array

我不太确定你想在这里实现什么,因为 HTMLCollection 确实有 item(n) 方法返回......是的,索引处的项目 n (如@的文档中所示987654321@)

var userVote = collectionPull[0];

好的,现在即使第一行确实有效,这总是会将集合的第一个元素分配给userVote,即以下行

tags[i].innerHTML += "<span> ("+userVote+")</span>";

会为页面上的所有分数分配相同的值。

已修复

遗憾的是,我不知道您打算“(userVotes)”实际包含什么,所以我认为这不会解决您的所有问题,但这是我能用您提供的信息做的全部:

var i, tags = document.querySelectorAll('.tagline');
for(i=0;i<tags.length;i++) {
    // get all elements with class 'score' that are inside the tagline
    var userVote = tags[i].getElementsByClassName('score').item(0);

    // do something with this element
    userVote.style="background-color: red";
}

jQuery

​​>

由于 reddit 在他们的页面上有 jQuery,你也可以简单地做(例如)

var $ = unsafeWindow.jQuery;
$('.tagline .score').css('background-color', 'red');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-13
    • 2014-03-02
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    相关资源
    最近更新 更多