通过使用Javascript查找内容来删除表行

ber*_*nte 1 javascript

我有这个代码:

<table>
    <tbody>
        <tr>
            <td align="left">X</td>
            <td>X1</td>     
        </tr>
        <tr>        
            <td width="150" align="left">Y</td>
            <td>Y1</td>
        </tr>
        <tr>    
            <td align="left">Status: </td>
            <td colspan="4">
                <select name="status" size="1">
                    <option selected="selected" value="2">one</option>
                    <option value="1">two</option>
                </select>                   
            </td>
        </tr>
        <tr>        
            <td width="150" align="left">Z</td>
            <td>Z1</td>
        </tr>   
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

并希望使用Javascript删除此行:

<tr>    
    <td align="left">Status: </td>
    <td colspan="4">
        <select name="status" size="1">
            <option selected="selected" value="2">one</option>
            <option value="1">two</option>
        </select>                   
    </td>
</tr>
Run Code Online (Sandbox Code Playgroud)

问题是我没有任何身份证或类别可供识别.有没有办法通过搜索"状态:"或名称="状态"使用javascript for Firefox(使用它为Greasemonkey)删除行?

我不能使用jQuery,我无法编辑代码来设置任何ID

最好的问候bernte

Den*_*ret 5

如果你能负担不起与IE7兼容,你可以这样做:

?var elements = document.querySelectorAll('td[align="left"]');
for (var i=0; i<elements.length; i++) {
    var text = elements[i].textContent || elements[i].innerText;
    if (text.trim()=='Status:') {
       elements[i].parentNode.parentNode.removeChild(elements[i].parentNode);   
    }
}
Run Code Online (Sandbox Code Playgroud)

示范

为了与IE7兼容,您可能必须迭代所有行和单元格,这不会真的慢,但不太清楚.

请注意,我使用trimIE8上不存在的内容.要在需要时使其在此浏览器上运行,您可以添加此常用修补程序(来自MDN):

if(!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g,'');
  };
}
Run Code Online (Sandbox Code Playgroud)

  • 我会相应地改变它.但是在这个非常精确的主题上,我真的不明白为什么标准名称是textContent.只是有一次,微软似乎选择了一个相关的名字...... (2认同)