0

table row tag で始まり、終了する文字列があります<tr>...</tr>。この中に複数<td>の があり、次の形式を取ります。

<td class="someClass">TextIWant TextI Do NOtWant</td><td><img src='green.png'></td>
<td class="someClass">TextIWant TextI Do NOtWant</td><td><img src='blue.png'></td>

私がやろうとしているのは、color.png を見て、クラスを td に追加し、td 内のテキストの一部をトリミングすることです。最終的な出力は次のようになります。

<td class="someClass green">TextIWant</td>
<td class="someClass blue">TextIWant</td>

正規表現でこれを行うにはどうすればよいですか?

4

2 に答える 2

2

何をする必要があるかについてもっと多くの詳細を提供する必要があるかもしれませんが、最善の方法は DOM パーサーを使用することであり、JavaScript には非常に優れたパーサーが組み込まれています (IE8 はサポートされていません)。

// Select all odd `td` nodes and iterate over them
Array.prototype.forEach.call(document.querySelectorAll("td:nth-child(odd)"),
function (elem) {
    // Get the immediately following sibling (with the img)
    var imgTd = elem.nextSibling;
    // Get the color from the <img>
    elem.className += ' ' + imgTd.querySelector("img").getAttribute("src")
        .replace('.png', '');
    // Remove the sibling
    imgTd.parentNode.removeChild(imgTd);
    // Update the initial elements text to remove the undesired text
    elem.textContent = elem.textContent.replace("TextI Do NOtWant", "");
});

http://jsfiddle.net/e9vrK/

于 2013-09-04T21:01:23.863 に答える