Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

shadowk

[Resolvido] Alteração de código

Mensagens Recomendadas

shadowk

Boas!

Eu tenho este código em JS para marcar/desmarcar todas as checkbox, só que está a funcionar com a selecção de outra checkbox, não sei se me fiz entender muito bem, por exemplo eu ao marcar essa checkbox o resto também vai ficar smarcado e ao desmarcar essa checkbox o resto também vai ficar desmarcado, e muda a mesagem consoante a operação "seguinte", aparece "marcar todos" ou então "desmarcar todos".

O que eu queria era que em vez de ter de seleccionar uma checkbox que fosse um link, e que a mensagem fosse esse link, assim eu clicava em "marcar todos" e ficava tudo marcado e a mensagem mudava para "desmarcar todos".

Código:

<html>

<head>
<script language=javascript>
<!--
cont = 0;
function CheckAll() { 
   for (var i=0;i<document.formulario.elements.length;i++) {
     var x = document.formulario.elements[i];
     if (x.name == 'UIDL[]') { 
x.checked = document.formulario.selall.checked;
} 
}
if (cont == 0){
var elem = document.getElementById("ver");
elem.innerHTML = "Desmarcar todos";
cont = 1;
} else {
var elem = document.getElementById("ver");
elem.innerHTML = "Marcar todos";
cont = 0;
}

} 
//-->
</script>
</head>

<body>
<font face=verdana size=1 color=black>
<form name="formulario">

<input type="checkbox" name="selall" onClick="CheckAll()"><span id="ver">Marcar todos</span></a><br>

<input type=checkbox name="UIDL[]" value="1">Opção 1<br>

<input type=checkbox name="UIDL[]" value="2">Opção 2<br>

<input type=checkbox name="UIDL[]" value="3">Opção 3<br>
<input type=checkbox name="UIDL[]" value="3">Opção 3<br>
</form>


</body>
</html> 

Obrigado desde já!


" THE SECRET OF CREATIVITY IS KNOWING HOW TO HIDE YOUR SOURCES "

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
IceBrain

Isso não faz com que seja um link. Além disso, se se quer tirar o checkbox inicial, não se pode usá-lo depois para verificar se devem ser marcados ou desmarcados.

Tenta assim:

<html>
    <head>
        <script type="text/javascript">
        <!--
        cont = false;
        function CheckAll() {
            for (var i=0;i<document.formulario.elements.length;i++) {
                var x = document.formulario.elements[i];
                if (x.name == 'UIDL[]')
                    x.checked = !cont;
            }
            document.getElementById("ver").innerHTML = (cont)?("Marcar todos")"Desmarcar todos");
            cont = !cont;
        }
        window.addEventListener('load', function() { document.getElementById('ver').addEventListener('click', CheckAll, false); }, false);
        //-->
        </script>
    </head>

    <body>
        <font face=verdana size=1 color=black>
        <form name="formulario">
            <a id="ver" href="#">Marcar todos</a><br>
            <input type=checkbox name="UIDL[]" value="1">Opção 1<br>
            <input type=checkbox name="UIDL[]" value="2">Opção 2<br>
            <input type=checkbox name="UIDL[]" value="3">Opção 3<br>
            <input type=checkbox name="UIDL[]" value="3">Opção 3<br>
        </form>
    </body>
</html>  

Já agora, mudei o onClick="CheckAll()" para aquela linha dos window.addEventListener(). É uma "mania" minha (gosto de manter o Javascript separado do HTML), mas visto que é preciso estar com truques para suportar o IE, se calhar mais vale usares o onClick.

EDIT: Limpei um pouco o código, e mudei a "cont" para um boleano (usar 0 e 1 alternadamente é necessário em C, mas em Javascript faz mais sentido usar boleanos; assim, é possível passar o "if(cont == 1) cont = 0 else cont = 1" para "cont = !cont").

Além disso, usei a estrutura (CONDIÇÃO)?(EXECUTE_SE_VERDADEIRA):(EXECUTA_SE_FALSA), para eliminar o If.


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
shadowk

IceBrain está a funcionar com o Firefox sem problemas!

Obrigado!  :thumbsup:


" THE SECRET OF CREATIVITY IS KNOWING HOW TO HIDE YOUR SOURCES "

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.