Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

YoLaTengo

Tentando aprender javascript na marra...rs

Recommended Posts

Olá pessoal!

 

Estou estudando javascript por conta própria e me apareceu um problema.

Quero fazer uma enquete e a lógica é bem simples, mas não consigo fazer funcionar, é assim:

 

Cada pergunta tem 4 alternativas (radio buttons), cada alternativa tem um valor, ao final da enquete quando a pessoal clica em resultado ela soma as alternativas marcadas e exibe uma mensagem de acordo com a pontuação dela.

 

 

Por exemplo:

 

 

1 - Pergunta

 

a - Resposta (vale 1)

b - Resposta (vale 2)

c - Resposta (vale 3)

d - Resposta (vale 4)

 

 

2 - Pergunta

 

a - Resposta (vale 1)

b - Resposta (vale 2)

c - Resposta (vale 3)

d - Resposta (vale 4)

 

 

Se a pessoa responder b e d, uma nova janela aparece (ou até na mesma) e aparece uma mensagem do tipo "Você fez 6 pontos. Dá pra melhorar"

 

 

 

Ou seja, bem simples, mas não to conseguindo aplicar o código nisto...

 

 

 

Quem puder ajudar, fico grato!!!

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade eu já fiz e refiz e apaguei várias tentativas, o que eu tenho agora é só o HTML e as seguintes linhas, que eu acredito que é o que vai fazer o código selecionar apenas as marcadas:

 

var selecao
for (i=0;i<document.pesquisa.a.length;i++), (i=0;i<document.pesquisa.b.length;i++);
	
{
if (document.pesquisa.a[i].checked==true), (document.pesquisa.b[i].checked==true){
selecao=i
break

 

Isso tá certo?

 

A seguir segue o código inteiro, com questões apenas para exemplo:

<html>
<head>
	<title>Teste</title>
	
	
	<link rel="stylesheet" type="text/css" href="testcss.css" />
	
<script>


var selecao
for (i=0;i<document.pesquisa.a.length;i++), (i=0;i<document.pesquisa.b.length;i++);
	
{
if (document.pesquisa.a[i].checked==true), (document.pesquisa.b[i].checked==true){
selecao=i
break


</script> 


</head>



		
<body>

<form name="pesquisa" action="mailto:sapamaqui@hotmail.com">


<h2>
<ul>
<li>Qual sua cor preferida?</li>
	</h2>	


<h3>
<li><input type="radio" name="a" value="1"> Azul			</li>
<li><input type="radio" name="a" value="2"> Branca			</li>
<li><input type="radio" name="a" value="3"> Preta			</li>
<li><input type="radio" name="a" value="4"> Vermelha	 	</li>	

</ul>

<br><br>

<h2>
<ul>
<li>Qual seu animal favorito?</li>
	</h2>	

<li><input type="radio" name="b" value="1"> Gato			</li>
<li><input type="radio" name="b" value="2"> Galinha			</li>
<li><input type="radio" name="b" value="3"> Cachorro			</li>
<li><input type="radio" name="b" value="4"> Ovelha	 	</li>	

</ul>
	
	
	


</h3>
</body>
</html>

 

Bom, é isso...

O que eu preciso é criar um Botão no final, pra quando a pessoa selecionar as opções e clicar nele, o código pegue os valores das selecionadas, some e exiba uma mensagem (na própria página ou em um pop-up, não alert) de acordo com o valor total.

É provável que apareça alguns campos de texto na pesquisa e o valor inseridos neles apareçam na mensagem final, mas isso é o de menos e creio que não terei problemas pra fazer.

 

 

Bom, desculpem o nível... super iniciante... rs

 

Abraço e obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok gente... ninguem mesmo?

 

Tentei e tentei de todas as formas, tentei até através de um programinha que gera formulários visualmente mas não adiantou... ele é complexo demais pra mim (precisa mexer com banco de dados e etc....)

 

Bom, vamo ver se pelo menos isso alguem pode me responder:

Pelos testes que eu fiz, quando a pessoa clica em enviar, aparece uma mensagem falando algo do tipo: "As informações fornecidas serão enviadas por email, sem criptografia, permitindo assim... bla bla bla..." - tem como isso não aparecer?

 

Caso eu necessite arquivar estas informações num outro documento, o único modo é por banco de dados? Por onde é melhor eu começar a estudar isso?

 

Novamente reforço o pedido, se alguem puder me dar uma luz com esse código, agradeço muito.... quero uma coisinha beeeeem simples, mas que vai ser de grande utilidade pra mim!

 

 

 

Obrigado!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue o raciocinio dessa função que eu fiz pra você aki... e ve se consegue pensar em algo pra você..

 

<script>
function Js()
{
var radios = document.getElementsByTagName("input");
for (i=0;i<radios.length;i++)
{
if (radios[i].getAttribute("type") == "radio")
{
if (radios[i].checked)
{
alert(radios[i].value);
}
}
}
}
</script>
<input type = "radio" name = "teste" id = "teste" value = "1"> Teste 1
<input type = "radio" name = "teste" id = "teste" value = "2"> Teste 2
<input type = "radio" name = "teste" id = "teste" value = "3"> Teste 3
<input type = "radio" name = "teste" id = "teste" value = "4"> Teste 4
<br>
<input type = "radio" name = "teste1" id = "teste" value = "1"> Teste 1
<input type = "radio" name = "teste1" id = "teste" value = "2"> Teste 2
<input type = "radio" name = "teste1" id = "teste" value = "3"> Teste 3
<input type = "radio" name = "teste1" id = "teste" value = "4"> Teste 4


<input type = "button" vaçue = "Go" onclick = "Js()">

 

Espero ter ajudado..

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!!

Muito útil!! Valeu!!!

 

Agora o que preciso é, ao invés de ele exibir cada resultado de uma vez, que ele some os values de todos e exiba de uma vez...

 

To vendo o que dá pra fazer aqui!!

 

 

Valeu, Darkdemo!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra não falar qu eu não ajudo ... toma a função pronta ai vai..

 

<script>
var total;
total = 0;
function Js()
{
var radios = document.getElementsByTagName("input");
for (i=0;i<radios.length;i++)
{
if (radios[i].getAttribute("type") == "radio")
{
if (radios[i].checked)
{
total = parseFloat(total) + parseFloat(radios[i].value);
}
}
}
alert(total);
total = 0;
}
</script>
<input type = "radio" name = "teste" id = "teste" value = "1"> Teste 1
<input type = "radio" name = "teste" id = "teste" value = "2"> Teste 2
<input type = "radio" name = "teste" id = "teste" value = "3"> Teste 3
<input type = "radio" name = "teste" id = "teste" value = "4"> Teste 4
<br>
<input type = "radio" name = "teste1" id = "teste" value = "1"> Teste 1
<input type = "radio" name = "teste1" id = "teste" value = "2"> Teste 2
<input type = "radio" name = "teste1" id = "teste" value = "3"> Teste 3
<input type = "radio" name = "teste1" id = "teste" value = "4"> Teste 4


<input type = "button" vaçue = "Go" onclick = "Js()">

Abraços....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hehe...

que isso...

 

Só o primeiro auxílio já tava ótimo, mas já que mandou este também, vai me poupar um trabalhão!

 

Valew Darkdemo!

 

 

Mas olha só, eu tentei inserir uma mensagem dependendo da pontuação da pessoa, mas o que acontece é que, ao clicar em ok ele exibe o valor da 1ª opção marcada e depois o valor da soma...

O que eu fiz de errado?

 

<script>
var total;
total = 0;
msg1 = ('Dá pra melhorar, você marcou apenas ');
msg2 = ('Parabéns! Você marcou ')

function Js()
{
var radios = document.getElementsByTagName("input");
for (i=0;i<radios.length;i++)
{
if (radios[i].getAttribute("type") == "radio")
{
if (radios[i].checked)
{
total = parseFloat(total) + parseFloat(radios[i].value);

{
if (total<3)
alert (msg1+total);
else
alert (msg2+total);
}
}
}
}
}
total = 0;



</script>

Bom, fora isso ainda tenho uma dúvida, configurei o botão "Go" pra que o resultado da pesquisa seja enviado para um e-mail, mas toda vez que a pessoa clica aparece a mensagem:

Este formulário está sendo enviado por e-mail. Ao ser enviado, este formulário revelará seu endereço de e-mail ao destinatátio e enviará os dados do formulário sem criptografá-los, anulando a privacidade. Deseja continuar?

 

 

Clicando em ok abre o outlook....

 

 

O que eu quero saber é se num tem uma forma mais simples de isso ser armazenado num outro documento...

Eu nunca mexi com banco de dados e, como vcs podem ver, to com pouco tempo pra fuçar e aprender....

 

 

Obrigado, gente!

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

toma a função corrigida:

 

var total;
total = 0;
msg1 = ('Dá pra melhorar, você marcou apenas ');
msg2 = ('Parabéns! Você marcou ')

function Js()
{
var radios = document.getElementsByTagName("input");
for (i=0;i<radios.length;i++)
{
if (radios[i].getAttribute("type") == "radio")
{
if (radios[i].checked)
{
total = parseFloat(total) + parseFloat(radios[i].value);
}
}
}
if (total<3)
{
alert (msg1+total);
total = 0;
}
else
{
alert (msg2+total);
total = 0;
}
}

PS: Vou ser BEM sincero... é a ultima vez que corrigo ou arrumo essa função....

 

Para armazenar as informações ou você usa um BD ou grava em um arquivo txt... para isso você vai precisar utilizar um script Server-Side, como o ASP, PHP entre outros...

 

Abraços....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.