Javascript nao executa [RESOLVIDO]

Bom dia galera…

Eu estou tentando executar um javascript passando como parametro um rich:dataTable. veja o codigo… Ele esta nesta ordem na pagina.

<table width="100%" id="test">					
						<td align="right" style="text-size: 15px; font-family: Arial;">						
						<a4j:commandButton
							value="Select All"
							action="#{pesquisaWorkOrder.selectAllWorkOrders}"							
							onclick="selectAllLines(simpletable);" />
						</td>
					</tr>
				</table>
				<div style="overflow: auto; width: 780; height: 280px"><rich:dataTable
					width="99%" style="text-align:center; cursor:pointer"
					value="#{pesquisaWorkOrder.dtModel}" var="dt" id="simpletable"
					forceId="true" onRowMouseUp="setColorRow(this, false);">
					<a4j:support event="onRowClick"
						action="#{pesquisaWorkOrder.getRowSelected}" />
					<f:facet name="header">
						<rich:columnGroup>
							<rich:column>
								<h:outputText value="Departamento" />
							</rich:column>
							<rich:column>
								<h:outputText value="Ordem de Serviço" />
							</rich:column>
//continuaçao da div.

//javascpript
function selectAllLines(tabela)
{
	alert(tabela);
}

Quando eu clico no buttom ele vai executar o javascript. Eu tenho certeza que o javascript esta sendo chamado pq se eu nao passar nenhum parametro e der um alert la dentro da function, funciona blzinha…
Vamos ao erro:
Quando eu clico no buttom da o seguinte erro na pagina do Internet explorer:
“simpletable” não esta definida.

Alguem sabe pq esta acontecendo isso?

vlw mais uma vez galera…

Alguem saberia me ajudar galera? Tô precisando muito dessa soluçao.

O que é simpletable?

Deveria ser uma string contendo um id de um objeto do DOM, um objeto em si, uma EL, mas somente simpletable não tem definição.

Boa tarde Laubstein…

simpletable é o id da minha <rich:dataTable que estou passando como parametro para a function do javascript…

Ja testou?

selectAllLines(document.getElementById('simpletable'));

Na saida Html o id esta permancendo o mesmo?

Ygor, obrigado pela ajuda cara…

Eu coloquei a linha que vc falou aqui e dentro do java script eu coloquei um alert() para imprimir o parametro que ele recebe… Imprimiu null…
Eu coloquei um alert quando clicar na linha do rich:dataTable para mostrar o id que no caso seria “simpletable”… Esse alert mostrou mensagem varia, ou seja, nenhum id, nenhuma msg… nada…

<table width="100%" id ="test">
					<tr>
						<td align="left" style="text-size: 14px; font-family: Arial;"><h:outputText
							value="Quantidade registros: #{pesquisaWorkOrder.qtOrdensAssociadas}"
							id="qtOs" /></td>
						<td align="right" style="text-size: 15px; font-family: Arial;">
						<a4j:commandButton value="Select All"
							action="#{pesquisaWorkOrder.selectAllWorkOrders}" 
							onclick = "selectAllLines(document.getElementById('simpletable'));"/></td>
					</tr>
				</table>
				<div style="overflow: auto; width: 780; height: 280px"><rich:dataTable
					width="99%" style="text-align:center; cursor:pointer"
					value="#{pesquisaWorkOrder.dtModel}" var="dt" id="simpletable" forceId = "true"
					onRowMouseUp="alert(id);setColorRow(this, false);">

Cara, oq eu posso fazer para solucionar esse problema?

vlw pela ajuda…

Se imprimiu null é pq o js não esta encontrando esse Id.

Seria bom tu dar uma analizada no código de saida(html) e ver como esta ficando os id, ou que componentes a mais o Rich está criando. E para ficar mais facil encontrar o erro tu pode executar comandos javascript na propria barra de endereços. É só acrescentar um ‘javascript:’ antes do código.
por exemplo:

javascript:alert(document.getElementById('simpletable'));

Nunca utilizei o Rich faces, mas sei que no Prime mesmo forçando os id com um prependId tinha alguns componentes que eram modificados;

Dude, quando é montada a arvore do jsf od ids são montados para que não ocorram conflitos ou seja

quando vc faz um document.getElementById passando como parametro (‘div’), ele não conseguira encontrar pois o jsf altera o id do div para form:div ou para form/div, não me lembro ao certo, então instale o firebug no seu firefox ou use outra ferramenta para inspecionar o seu html, ou mesmo mande mostrar o codigo fonte da página para saber o real id do seu div, ou seja da sua rich:dataTable.

Abraço

Galera, eu instalei o firebug aki na maquina e estou verificando o codigo html gerado…
vejam soh…
ah, eu troquei o id do rich:datatable para tablesimple, ok?!

<div style = "overflow: auto; width: 780px; height: 280px";
<table id = "modalOS:j_id157:formModal:tablesimple" class = "dr-table rich-table" 

Se eu passo todo esse id para o javascript e dou um alert la dentro, ele imprimo “[Object]”…
Não deveria imprimir tipo “[HTMLdataTable]”…
Se eu passar esse id completo, não corre o risco dele mudar nao?

Me ajudem por favor pq eu nao tenho muita experiencia com desenvolvimento web.

Muito obrigado pela ajuda…

Isso esta dentro de um modal e mais um componente modalOS:j_id157, quando você não coloca id em um componente do jsf ele cria um id, isso ocorreu com o j_id157, identifique quem é esse cara e coloque um id na tag, assim você terá certeza que o id não irá mudar. E mais uma coisa, não sei se você utiliza, mais procure por jQuery e estude selects, vai te ajudar a selecionar todas as linhas da table.

Galera… Consegui resolver o problema… Muito obrigado a quem me auxiliou nesse topico…
Bom, a soluçao foi essa mesmo que tinhamos discutido. Vou deixar o codigo ai para quem quiser analisar depois…

<a4j:commandButton value="Select All"
							action="#{pesquisaWorkOrder.selectAllWorkOrders}" 
							onclick = "selectAllLines(document.getElementById('modalOS:includeView:formModal:tablesimple'));"/>


function selectAllLines(tabela){
alert(tabela);
}

Obrigado mais uma vez galera…

at+