Percorrer array javascript, ql o erro?

Opa :smiley:

Tenho uma função que está da seguinte maneira:

					var listaBotoes = new Array();
					function desabilitarBotaoSubmit(button){
						var botaoJaFoiClicado = false;
						var i = 0;
						alert(listaBotoes.length);
						if(listaBotoes.length == 0){
							listaBotoes[0] = button.name;
						} else if(listaBotoes.length == 1){
							listaBotoes[1] = button.name;
						} else if(listaBotoes.length == 2){
							listaBotoes[2] = button.name;
						}
						for(i=0; i<listaBotoes.length; i++){
							alert(listaBotoes[i]);
						}
						alert(botaoJaFoiClicado);
						alert(listaBotoes.length);
						alert(listaBotoes[0]);
						return false;
					}

E recebo o erro

O que estou fazendo de errado para percorrer o array? Se eu passar um i < 3, ele da o erro:

[]'s

[]'s

Javascript ?
javax.faces.FacesException?
org.apache.jasper.JasperException?

Não entendi nada…

Tu ja foi na linha 41,36 pra saber o que tem lá ?

Estou utlizando JSF com os componentes woodstock, eu testei no html puro e funcionou…será que o jsf vai ferrar com isso tb? ¬¬

Se é uma exception do java não é um erro no javascript.

Já foi na linha 41,36 pra ver o que ele tá apontado ?

sim e é o começo do meu for…tanto que eu tiro o for e ele funciona numa boa…se eu usar <, > ou ==, ele dá pau e nao é exceção da minha jsp.

eu usei um while != e ele funcionou numa boa, só que se eu usar != ele entra 2x quando seria pra terminar o fluxo…alguma idéia?

					var listaBotoes = new Array();
					var botaoJaFoiClicado = false;
					function desabilitarBotaoSubmit(button){
						var i = 0;			
						if(listaBotoes.length == 0){
							listaBotoes[0] = button.name;
						} else if(listaBotoes.length == 1){
							listaBotoes[1] = button.name;
						} else if(listaBotoes.length == 2){
							listaBotoes[2] = button.name;
						}	
						while(i != listaBotoes.length){
							if(listaBotoes[i] == button.name){
								if(!botaoJaFoiClicado){
									botaoJaFoiClicado = true;
									button.value='Aguarde';
									button.disable=true;
									document.forms["form2"].submit();
								} else {
									alert ("Aguarde!");
								}
							}
						i++;
						}
						if(!botaoJaFoiClicado){
							return true;
						}	
					}

[]'s

Tem como postar o restante da página ?
Pelo menos o contexto desse teu javascript ai.

Entao nbluis, não sei pq o jsf ou o seam estão interpretando de maneira incorreta caracteres como > ou <, somente funciona com o != mesmo, de repente eu preciso utilizar um > ou <, vou fazer esse teste depois já que testei o javascript todo e está funcionando.

Fiz algumas alterações e mudei ele para:

var listaBotoes = new Array();
var botaoJaFoiClicado = false;
function desabilitarBotaoSubmit(button, form){
    var i = 0;
    var botoes = listaBotoes.toString();
    var existeBotaoArray = botoes.match(button.name);
    if(existeBotaoArray == null){
        if(listaBotoes.length == 0){
                listaBotoes[0] = button.name;
        } else if(listaBotoes.length == 1){
                listaBotoes[1] = button.name;
        } else if(listaBotoes.length == 2){
                listaBotoes[2] = button.name;
        }
    }
    for(i=0; i != listaBotoes.length; i++){
        if(listaBotoes[i] == button.name){
            if(botaoJaFoiClicado == false){
                botaoJaFoiClicado = true;
                button.value='Aguarde!';
                button.disable=true;
                document.forms[form].submit();
                return true;
            } else {
                alert ("Aguarde!");
                return false;
            }
        }
    }
}

Essa função funciona perfeitamente para quem quiser utilizar JSF e não permitir que seja realizado um duplo clique e ainda adiciona todos os botões já clicados.

Só estou com uma dúvida: existe alguma outra maneira de eu adicionar objetos no array sem precisar passar o número da posição? Pq tenho páginas que tem uma porrada de botões e fica complicado criar outro javascript só para isso! hehe

var listaBotoes = new Array();
var botaoJaFoiClicado = false;
var contadorBotoes = 0;
function desabilitarBotaoSubmit(button, form){
    var i = 0;
    var botoes = listaBotoes.toString();
    var existeBotaoArray = botoes.match(button.name);
    if(existeBotaoArray == null){
        listaBotoes[contadorBotoes] = button.name;
        contadorBotoes++;
    }
    for(i=0; i != listaBotoes.length; i++){
        if(listaBotoes[i] == button.name){
            if(botaoJaFoiClicado == false){
                botaoJaFoiClicado = true;
                button.value='Aguarde!';
                button.disable=true;
                document.forms[form].submit();
                return true;
            } else {
                alert ("Aguarde!");
                return false;
            }
        }
    }
}

Essa seria a melhor maneira ou tem alguma outra mais elegante?
[]'s

Após esses ajustes, existem certos botões que estão me lançando a exceção:

Existe alguma maneira de evitar isso? E isso só ocorre na primeira vez que é realizado o duplo clique, nas próximas funcionam normalmente e independente de quantos cliques forem efetuados.

[]'s