选择并获取与页面上其他元素具有相同类别的span的内容

时间:2015-04-10 23:21:20

标签: javascript jquery html google-chrome-extension

我正在尝试做一些看似简单的事情,但事情变得比我想象的要困难。

我在第4页的span元素(我无法控制)上都有相同的类ID( BOfSxb ),我只需要编辑其中的两个 - 第二个和第四个元件。所以我不确定如何只选择那两个,在我这样做之前,我需要知道第二个或第四个span元素的内容(2和4具有相同的内容)。我想出了如何获取内容,但我得到两者结合所以如果内容是2,304,400我回来2,304,4002,304,400

这是我到目前为止能够获得内容的方式:

var spanContent = $("span.BOfSxb:contains(2,304,400)").text()

console.log(spanContent); //returns 2,304,4002,304,400 ( I need 2,304,400)

上面的另一个问题是:包含有一个我不会提前知道的数字。

在我将内容从第二个或第四个范围移开后,我需要对它进行比较,看看它属于什么范围并用它做其他事情。类似的东西:

if ($(".BOfSxb:contains("+ spanContent + ")").text() >= 0 && $(".BOfSxb:contains("+ spanContent + ")").text() <= 1000) {

$("span.BOfSxb:contains("+ spanContent + ")").replaceWith(finalDiv);

} else if ($(".BOfSxb:contains("+ spanContent + ")").text() >= 1001 && $(".BOfSxb:contains("+ spanContent + ")").text() <= 1000000) {

$("span.BOfSxb:contains("+ spanContent + ")").replaceWith(finalDiv2);

} else {

//something else
}

编辑:我应该补充一下这实际上是一个Chrome扩展程序,它将在我无法控制的页面上编辑span元素。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

您可以使用与其类相关的索引号来指定要抓取的元素。您可以使用jquery .eq()方法执行此操作。

$(".span.BOfSxb").eq(1).text();
$(".span.BOfSxb").eq(3).text();

然后,您可以使用parseInt();方法将其更改为数字,并根据需要添加它们。 parseInt()方法从字符串返回一个整数。当您从元素中获取文本时,由于它们不被视为数字而无法将它们添加到一起,因此它们被视为文本字符串。

这里是小提琴:http://jsfiddle.net/atw5z0ch/

答案 1 :(得分:1)

如果我理解你的问题,这应该有效:

HTML:

<span class="span">1234</span>
<span class="span">Other content 1</span>
<span class="span">1234</span>
<span class="span">Other content 2</span>

JavaScript(使用jQuery):

var content = '1234';
// Notice:
// (i) content is a string. You should use quotes if you 
// directly write the value, as specified here: https://api.jquery.com/contains-selector/
// (ii) Using classes to select objects with jQuery will return an array of elements
var spans = $('.span:contains(' + content + ')');

spans.each(function(i){
    var value = parseInt($(this).text());
    if(value > 0 && value < 1000){
        console.log(value);
    }
});

工作JsFiddle:http://jsfiddle.net/3tbag1qs/2/

更新:正如@zfrisch建议的那样,你也可以通过他们的位置获得跨度。如果您不确定确切的顺序,此处提供的解决方案是另一种解决问题的方法。

答案 2 :(得分:0)

您可以使用:nth-of-type选择器。它可能不会在旧的浏览器中工作。

https://css-tricks.com/almanac/selectors/n/nth-of-type/