Ir para conteúdo

Arquivado

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

nummularius

Loop while retorna NaN a partir do segundo valor do Array.

Recommended Posts

Salve, meus amigos!

Estou começando meus estudos em programação, ainda na fase de lógica da programação.

O código abaixo é para executar a seguinte tarefa: pegar, através do input (id = "inputValor" no HTML) três valores numéricos, através da função insereValor, colocar esses valores no array recebeValor e depois fazer a média desses valores.

 

Limitei a função insereValor em 3 valores, e depois a função mediaFunc faz a média desses 3 valores.

O problema: parece que o loop (while) só retorna o primeiro valor como numérico, os outros valores surgem como isNaN = true. Ou seja, não tenho como fazer o cálculo de média, pois o resultado da NaN.

 

O que estou fazendo de errado?

Obrigado.
 

<meta charset = "UTF-8">

<input id = "inputValor" />
<button id = "botaoInsere">Inserir</button>
<p id = "pegaTexto"></p>


<script type="text/javascript">
	
	function mediaFunc(v1, v2, v3){

		var media = parseInt((v1 + v2 + v3) / limite);

		return media;

	}


	function insereValor(){

		while(posicao < limite) {
			

			//pega o valor inputado no campo em branco.
			recebeValor.push(parseInt(document.getElementById("inputValor").value));
			
			//acrescenta uma posição no array. Ou seja, vai para a próxima posição.
			posicao++;
          
			inputValor.focus();
			return recebeValor;
		
		}
      
			mediaFunc();
			inputValor.focus();

	}

	var posicao = 0;
	var limite = 3;
	var recebeValor = [];

	var botaoInsere = document.getElementById('botaoInsere');
	botaoInsere.onclick = insereValor;

</script>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O motivo desse retorno e que você chama a function mediaFunc() sem parametros e ela espera por 3 parametros:

function mediaFunc(v1, v2, v3){
var media = parseInt((v1 + v2 + v3) / limite);
 return media;
}

nesse momento está sendo parseado valores undefined

parseInt((undefined + undefined + undefined) / 3) esse é o motivo do seu erro

 

link do meu test: https://jsbin.com/laquwajeva/edit?html,js,output

 

ps: fiz alguns ajustes pontuais mas mantive a integridade da sua lógica

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por juniormatrix
      Olá
       
      Achei esse script aqui no fórum mesmo:
       
      $.validator.addMethod( "customEmail", function (value, element) { return this.optional(element) || /^[\w-\.]+@fulano\.com\.br$/i.test(value); }, "Por favor, insira um e-mail válido com o domínio @fulano.com.br" ); $("#formulario").validate({ ignore: ".ignore", rules: { empresa: { required: true }, nome: { required: true }, contato: { required: true }, celular: { required: true }, email: { required: true, email: true, customEmail: true }, }, }); Testei e funcionou perfeitamente, mas gostaria que liberasse mais e-mails válidos, ao invés de apenas um.

      Tem como fazer? 
       
      Se alguém puder ajudar, fico muito grato.
    • Por vicente386
      Ola. Tenho uma tabela no 3 campos que sao "LIVRO, POS, PAGINA" ao qual a logica e a seguinte: cada livro tem 100 paginas cada pagina tem 30 posiçoes tenho 8,364 registros pra inserir chegando a 100 paginas com 30 posiçoes cada passa para o livro 2 e como fazer o update na tabela inserindo nos campos LIVRO = 1, POS de 0 a 30 e PAGINA 1 para cada 30 registros logos apos pagina 2 ?
      estou tentando fazer assim:
      <?php > ini_set('max_execution_time', 2000); $pdo = new > DO(DB_SERVER.":host=".DB_HOST.";dbname=".DB_BASE,DB_USER,DB_PASSWORD); > $sql = $pdo->prepare("SELECT count(*) FROM tabela2018"); > $sql->execute(); > $livro = 1; > foreach($sql as $obj){ > $variavel = $obj[0]; > ceil((float)$variavel/100); > $qtdlaco = ceil((float)$variavel/100); > for ($id = 1; $id <= 35; $id++) { > for($L=1; $L < $qtdlaco; $L++) { > for ($P = 0; $P <= 30; $P++) { > $sql = $pdo->prepare("UPDATE tabela2018 SET LIVRO = :LIVRO, POS = :POS, PAGINA = :PAGINA WHERE idtabela2018 = $id"); > $sql->bindValue(':LIVRO', $livro); > $sql->bindValue(':POS', $P); > $sql->bindValue(':PAGINA', $L); > $sql->execute(); > } > } > } >} ?> mas na tebela so aparece: LIVRO POS PAGINA 1 30 83 1 30 83 1 30 83 e nao como deveria : LIVRO POS PAGINA 1 0 1 1 1 1 1 2 1
    • Por Alessandro Bodão
      Salve galerinha, passando pra mostrar pra vocês o novo projeto de marca que a Jatobá Estúdio desenvolveu, espero que gostem.   https://www.behance.net/gallery/166555627/Fernanda-Pinheiro-Nutricionista-Esportiva
    • Por rogerblower
      Boas pessoal, estou precisando de um calendário para agenda com crud para agendamento, mas teria que ser free.
      Obrogado.
    • Por Sapinn
      Fala galera! Tenho um site que possui alguns icones que são puxados da biblioteca flaticon , o problema é que de uma hora pra outra esses icones pararam de aparecer. No meu ambiente local funciona, mas no ambiente de produção eles não aparecem e eu recebo o seguinte erro no console: Failed to load resource: the server responded with a status of 404 () 
       
      Alguém saberia como resolver isso?
×

Informação importante

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