0

我的表单中有一个 jsf 数据表,就像这样。

<h:form id="personId">
     <h:dataTable id="hdatatable" value="#{Person.personList}" 
            border="0" cellpadding="10" cellspacing="5"
            var="per" styleClass="order-table"
            headerClass="order-table-header"
            rowClass="order-table-odd-row,order-table-even-row"
            syle="width: 950px" >


      <h:column id="tcoulm">
        <f:facet name="header">Action</f:facet>
        <h:commandLink id="editLink" value="Edit" action="#{person.editAction(per)}"/>
        <h:commandLink id="cancelLink" value="Undo" action="#{person.undoAction()}"/>
 </h:column>

</h:datatable>
</h:form>

在上表中,我尝试使用 javascript 访问 Edit 和 Undo 操作。所以,我为它们分配了 Id。但是当我在 html 源代码中看到这些元素的 Id 时,就像这样。这里的意思是我猜表的第三行。我可以在源中看到列 ID。

personId:hdatatable:3:editLink

如果我只给命令链接 ID 并在表单中给出 'prependId="false" 我仍然看到 commdndLink 的 ID 如下

j_id1267631877_14a2c285:editLink

如果我只使用表单 ID 和 commandLink Id

formId:j_id1267631877_14a2c285:editLink

如何准确访问数据表列中的元素?

4

1 回答 1

1

只需使用

var editLink = document.getElementById("personId:hdatatable:3:editLink");

?

如果您不想单独访问它们,但想全部访问它们,那么给它们一个样式类会容易得多

<h:commandLink ... styleClass="editLink" />

这样您就可以通过类名来选择它们(假设是 jQuery)

var $editLinks = $(".editLink");
于 2012-10-10T18:34:03.243 回答