0

Simple HTML DOM Parser を使用していますが、以下を取得する方法がわかりません:

私がこれを持っていると想像してください:

<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>

OKしたい。

私はこのようなことを試しました:

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

正解かと思いましたが、そうではORありませんAND

すべての要素ではなく、OK のみを取得したい。要約すると、V AND X AND Y AND NOT Z を持つ td が欲しいのですが、可能ですか?

ご回答ありがとうございます。

更新: OK を取得するために検索しているわけではありません。それ以外の可能性もあります。属性 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 値をチェックしています。For Each ループは、現在の td 要素を示し、td 値を取得し、テキスト値が OK 値であるかどうかを確認してから、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 配列に 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

理想的には、次の方法でそれを取得できるようにしたいと考えています。

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

また

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

シンプルな html dom ではそれはできません

良いニュースは、phpquery でそれができることです。

于 2013-04-18T11:56:18.357 に答える
0

わかりましたので、これが私がやったことです。

ガノンリブを使用しました。

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

ライブラリはほとんどすべてを処理します。

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

于 2013-04-19T10:27:37.883 に答える