我想在单击数据表中的特定行后更改字体颜色。我已经习惯了 onclick =“this.style.color ='green';但它不会持续存在。我的代码如下:
<p:dataTable value="#{userOption.menus}" var="mn" id="dt" paginator="true" rows="10">
<p:column>
<h:commandLink action="#{userOption.ret(mn.menuid)}" onclick="this.style.color='green';" update="p1:dt">
#{mn.menuname}
</h:commandLink>
</p:column>
</p:dataTable>
答案 0 :(得分:0)
您更改颜色onclick
的代码很好
这里的主要问题是h:commandLink
。
因为每次单击h:commandLink
时,它都不会发送Ajax(POST)请求,而是使用GET请求提交整个表单。
因此,从您的代码中,颜色会发生变化,但由于其h:commandLink
整个p:dataTable
被重新渲染并且颜色会重新开始。
要解决此问题,您可以使用Primefaces p:commandLink
,它会在您每次点击时发送一个AJAX(POST)请求,因此不会重新呈现整个p:dataTable
并且您的样式更改已应用于{{1将坚持下去。
onclick
答案 1 :(得分:0)
我遇到了与h:commandLink相同的问题,并提出了一个onclick方法,并且它的工作一致。
<h:commandLink value="#{files.fileName}" onclick="changeLink(this);" id="fetchPdf" action="#{bean.fetchPdf}" target="_blank"/>
<script>
function changeLink(el){
el.style.color = 'purple';
}
</script>