我正在尝试做一些看似简单的事情,但事情变得比我想象的要困难。
我在第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元素。
感谢您的帮助!
答案 0 :(得分:2)
您可以使用与其类相关的索引号来指定要抓取的元素。您可以使用jquery .eq()
方法执行此操作。
$(".span.BOfSxb").eq(1).text();
$(".span.BOfSxb").eq(3).text();
然后,您可以使用parseInt();
方法将其更改为数字,并根据需要添加它们。 parseInt()方法从字符串返回一个整数。当您从元素中获取文本时,由于它们不被视为数字而无法将它们添加到一起,因此它们被视为文本字符串。
答案 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
选择器。它可能不会在旧的浏览器中工作。