我在这里做一些奇怪的事情,如果可以,请提供帮助。我有一个带有如下报告的网页:
</p></li><li>ARTICLE 1 (NAME 1)<br /><p>
<div class="list">
Nothing found.
</div>
</p></li><li>ARTICLE 2 (NAME 2)<br /><p>
<div class="list">
<h4 class="sub-heading">Items:</h4>
<li class="item">
...
</li>
<li class="item">
...
</li>
</div>
这在整个页面中重复。文章 X 始终是唯一的,而名称 X 可能在多个文章附近相同。p 元素由我插入并且可以更改(而 css 不能)。div 是我无法触及的插件的输出。该插件搜索一些数据库并返回“未找到”或列出找到的项目。在同一页面上应该有一个表格,其中列出了所有可能的名称 X,并且默认情况下每个名称都有 0。我想要实现的是对名称 X 进行计数,并且仅当文章中 p 之后的元素中存在“未找到”时才增加名称附近的计数器。即,在上面的例子中,表格应该是
Name 1 1
Name 2 0
相同的名称 X 可能会出现在页面的下一个 ARTICLE X 之后,并且在下一个元素中带有或不带有“nothing found”。只有在“没有找到”存在时才增加计数器的规则应该适用。我的第一个想法是隐藏所有元素,只留下 ARTICLE X 的列表,其中“没有找到”存在于下面的元素中。我这样做了,然后使用以下代码进行计数:
var n = $("li:contains('Name 1')").length;
$("span").text("There are " + n)
这在很多层面上都是错误的。首先,它读取仍然包含所有元素的源代码,因为即使它们被隐藏它们仍然存在。它显然还替换了页面上确实存在的所有跨度元素中的文本(我从 .text 描述中获取了跨度),并且我真的不知道如何插入输出,因为我无法控制页面布局。任何想法都受到高度赞赏。谢谢。