1

可能重复:
检查 JavaScript 中属性的存在

我正在尝试在i.e. this.tBodies[0].rows[0].cells不使用 jQuery 的情况下获取表格 tbody 单元格 ( ) 的第一行。如果没有,我不希望造成错误。以下似乎可行,但有更好的方法吗?

var tbody_cells = (this.tBodies
  && this.tBodies
  && this.tBodies[0].rows
  && this.tBodies[0].rows[0])
? this.tBodies[0].rows[0].cells
:undefined;
4

3 回答 3

2

您可以使用querySelectorAll

this.querySelectorAll('tr:first-child td');

这不适用于 IE7,但你真的在乎吗?

如果你关心并且经常不得不做这种事情,我建议使用一个实用程序库,即jQuery,它使这变得容易并为你解决许多兼容性陷阱:

$('tr:first-child td', this);
于 2012-11-23T14:30:38.880 回答
2

使用 try catch 块:

var result;
try{
result = this.tBodies[0].rows[0].cells;
}catch(e if e instanceof ReferenceError){
result = undefined;
}
于 2012-11-23T14:31:16.503 回答
0

其实我不知道桌子是否总是准备好。

<html>
<body>
    <table id="tbl">
        <tbody>
            <tr>
                <td>
                </td>
                <td>
                </td>
            </tr>
        </tbody>
    </table>
</body>
</html>

function getTblCells() {

    var cells = document.getElementById("tbl").children[0].children[0].children;

    return children ? children : [];
}

您也可以给第一行一个 id 并检查该行是否存在(如果您怀疑它的存在),然后进行“有孩子”检查。

于 2012-11-23T14:35:35.060 回答