JavaScript: Alterando o value de um objeto CommandLink

Pessoal, preciso alterar o value (texto que representa o commandlink) via javascript, porem nao estou conseguindo, o que eu faço:

no onclick do mesmo, eu chamo uma função js, enviando o seu ‘this’.

a funcao:

function changeValueOf(objeto) { document.getElementById(objeto.id).value = 'teste'; }

não funciona! Alguém tem alguma idéia?

Valeu!

Eu nunca mechi com jsf mas em html seria assim:

<html>
<body>
<script type="text/javascript">
function teste(obj){
	if(obj.value == '1') obj.value = '2';
	else obj.value = '1';
}
</script>
<input type="button" value="1" onclick="teste(this);"/>
</body>
</html>

Eu vou assumir que, quando você disse commandLink, na realidade, se referiria à tag do HTML.

É o seguinte, não vou te dar a resposta pronta, porque eu mesmo não sei. Mas posso te mostrar o caminho das pedras.

Primeiro, se você passou this como referência, não precisa fazer isso:

basta fazer isso:

Segundo, só é possível usar o “value” se a tag HTML tiver o atributo “value”. A tag não tem, portanto fazer a atribuição é simplesmente ineficaz.

Terceiro, a mensagem a ser exibida como link está dentro da tag . Em XML, isso significa que o texto é filho de , correto? Acredito eu (porque não testei), que você tenha que criar um node, atribuir uma mensagem ao node, apagar os filhos atuais do node , e “appendar” o node criado por você como filho de . O DOM do Javascript é parecido com o DOM do Java. Exemplo: criar um node texto HTML:

Procure mais na internet sobre o DOM em Javascript, fuçe o código, que você deve achar uma solução.

então, tbm ‘deveria’ ser assim… porem, parece que um link não tem a propriedade ‘value’ ou uma que represente seu texto… :confused:

[quote=Leonardo3001]Eu vou assumir que, quando você disse commandLink, na realidade, se referiria à tag do HTML.

É o seguinte, não vou te dar a resposta pronta, porque eu mesmo não sei. Mas posso te mostrar o caminho das pedras.

Primeiro, se você passou this como referência, não precisa fazer isso:

basta fazer isso:

Segundo, só é possível usar o “value” se a tag HTML tiver o atributo “value”. A tag não tem, portanto fazer a atribuição é simplesmente ineficaz.

Terceiro, a mensagem a ser exibida como link está dentro da tag . Em XML, isso significa que o texto é filho de , correto? Acredito eu (porque não testei), que você tenha que criar um node, atribuir uma mensagem ao node, apagar os filhos atuais do node , e “appendar” o node criado por você como filho de . O DOM do Javascript é parecido com o DOM do Java. Exemplo: criar um node texto HTML:

Procure mais na internet sobre o DOM em Javascript, fuçe o código, que você deve achar uma solução.

[/quote]

obrigado, vou tentar

Leonardo, muito obrigado! Funcionou!

Segue:

function addTextNode() { var newtext = document.createTextNode(" Some text added dynamically. "); var para = document.getElementById("p1"); para.appendChild(newtext); }

Abração!!!