0

我正在使用简单的 HTML DOM 解析器,但无法弄清楚如何获得以下内容:

想象一下我有这个:

<td style"color:#e05206" width"22" height="58">OK</td>
<td style"color:#e05206" width"22" height="58" align="center">NOT OK</td>
<td style"color:#ffffff" width"22" height="58">NOT OK</td>

我想好起来。

我试过这样的事情:

$results = $html->find('td[style*=color:#e05206], td[width*="22"], td[height*=58], td[!align]');

我认为这将是正确的答案,但事实并非如此,因为它适用于 anOR而不是AND.

我只想得到好的而不是所有的元素。总而言之,我想要具有 V AND X AND Y AND NOT Z 的 td。这可能吗?

感谢您的回答!

更新: 我不是在寻找好,它可能是其他任何东西。我正在寻找具有属性 V=something AND X=something AND Y=something AND NOT Z 的 td。

4

4 回答 4

0
var OkElement = new Array();
$("table tr").find("td").each(function(){
   tdValue = $(this).text();
   if(tdValue == "OK"){
      OkElement.push($(this).attr('id');
   }
});

解释:这里我们循环所有的 td DOM 元素,然后检查 OK 值。对于每个循环,这表示当前的 td 元素并获取 td 值并检查文本值是否正常,如果它是正常值,那么我们将 td 元素 ID 推入数组。最后,数组仅包含包含 OK 文本的 td 元素 ID。注意:您应该为每个 td 元素提供唯一的 id。

    <td id="x1" style"color:#e05206" width"22" height="58">OK</td>
    <td id="x2" style"color:#e05206" width"22" height="58" align="center">NOT OK</td>
    <td id="x3" style"color:#ffffff" width"22" height="58">NOT OK</td>

因为即使您正在获取 td 元素,您也无法在没有 id 的情况下操作相应的 td 元素。现在您将在 OkElement Array 中获得 x1 现在您可以根据需要操作该 div 示例

for(var i=0;i<OkElement.length;i++){
    $("#"+OkElement[i]).attr('style','background-color : red');
}

在我的示例中,我为具有 OK 的 td 元素应用背景颜色红色

于 2013-04-18T09:23:26.453 回答
0
var OkElement = new Array();
$("table tr").find("td").each(function(){
   tdValue = $(this).text();
   if(tdValue == "OK"){
      OkElement.push($(this).css('color')
   }
});

Explanation : Here We are looping all the td DOM Elements and then checking for OK Value.
    for Each loop this indicates current td elements and getting the td value and checking whether text value is OK or not if it is OK value then we pushing the td elemtnt color style into array...
    Finally array contains only #e05206 which contains OK text. 





    Now you will get #e05206 in OkElement Array now you can manipulate that tds as you wish
    Example 
于 2013-04-18T10:08:34.823 回答
0

理想情况下,您希望能够通过以下方式获得:

'td:not([align])[style="color:#e05206"]'

或者

'td[style="color:#e05206"]:not([align])'

你不能用简单的 html dom 做到这一点,因为它很简单。

好消息是您可以使用 phpquery 来完成。

于 2013-04-18T11:56:18.357 回答
0

好的,这就是我所做的。

我使用了 ganon 库。

$results = $html('td[style + width + height + !align]');

该库几乎可以处理所有事情。

https://code.google.com/p/ganon/

于 2013-04-19T10:27:37.883 回答