Boas-vindas ao Power Pixel

Junte-se a comunidade! Crie o seu próprio conteúdo, e faça amizades.EntrarCriar uma conta

Loop com array escolhida

2 participantes

Houdini Houdini  • Sex 29 Jun 2018 - 14:51

Loop com array escolhida Empty Loop com array escolhida Sex 29 Jun 2018 - 14:51

[quadrado="Descrição"]Estou tentando fazer um loop, porém está dando um erro onde a var x não está definida. No que eu estaria errando?

Código:

function soma(){

document.getElementById("resultado00").value="0";
document.getElementById("resultado01").value="0";

var tip = ["dano06", "ha07", "hr08"];
for (x in tip) {
var x = parseFloat(document.getElementById("x").value);
""==document.getElementById("x").value&&(document.getElementById("x").value=0,x=0);}

document.getElementById("resultado00").value = parseInt(dano06 * 10);
document.getElementById("resultado01").value = parseInt(dano06 - 10);
}
[/quadrado]
[quadrado="Informações"]Fórum: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
Versão: MODERNBB[/quadrado]

Daemon Daemon  • Sex 29 Jun 2018 - 17:55

Loop com array escolhida Empty Re: Loop com array escolhida Sex 29 Jun 2018 - 17:55

Não entendi bem o que você deseja, mas acredito que o problema seja pelo fato de você não ter declarado a variável "x".
Código:
function soma() {

   document.getElementById("resultado00").value = "0";
   document.getElementById("resultado01").value = "0";

   var tip = ["dano06", "ha07", "hr08"];
   for (var x in tip) {
      x = parseFloat(document.getElementById("x").value);
      "" == document.getElementById("x").value && (document.getElementById("x").value = 0, x = 0);
   }

   document.getElementById("resultado00").value = parseInt(dano06 * 10);
   document.getElementById("resultado01").value = parseInt(dano06 - 10);
}
Desta forma ela está sendo declarada dentro da estrutura de loop. Do que se trata esse elemento de id "x"?
Não deu pra entender muito bem sua questão por falta de informações.

Houdini Houdini  • Sex 29 Jun 2018 - 18:04

Loop com array escolhida Empty Re: Loop com array escolhida Sex 29 Jun 2018 - 18:04

Quero que o x assuma os valores do array tip("dano06", "ha07", "hr08").
É complicado de fazer, pois estou tentando colocar a mesma lógica da linguagem r.
Mas por fim o que desejo é que os valores do tip façam um loop dentro do código abaixo. Pois seria um processo bem lento ter que fazer para cada variável. No exemplo tem apenas três, mas creio que vai passar de 20, assim o código iria ficar bem grande. Eu deveria atributir o tip[x] assim? sendo que o x iria variar de 0 a 20 por exemplo, e o número seria a posição dentro do tip?

Código:

 x = parseFloat(document.getElementById("x").value);
      "" == document.getElementById("x").value && (document.getElementById("x").value = 0, x = 0);

Daemon Daemon  • Sex 29 Jun 2018 - 18:15

Loop com array escolhida Empty Re: Loop com array escolhida Sex 29 Jun 2018 - 18:15

Não entendi por qual motivo você está passando a variável X para o tipo Float, já q os valores do Array são String, mas vejamos o exemplo abaixo:
Código:
var tip = ["dano06", "ha07", "hr08"];
tip.forEach(function(item, i) {
    document.getElementById("x").value += item;
});
Desta maneira os valores da Array serão incrementados no elemento X. Que acredito eu que seja um input do tipo texto.

Houdini Houdini  • Sex 29 Jun 2018 - 18:37

Loop com array escolhida Empty Re: Loop com array escolhida Sex 29 Jun 2018 - 18:37

No caso seria um input do tipo button, segue abaixo. Ainda assim sigo com uma dúvida, pois acho que estou no caminho certo, ainda assim não está definindo os valores do value para a variável.
Vou lhe passar a página onde estou trabalhando.
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
No caso após eu clicar ativar e adicionar o valor 1 em movimentos por turno, a calculadora deveria funcionar e multiplicar o valor do id dano06, no caso seria 11 por dez, sendo assim o Resultado de Esquiva ou Acerto seria de 110.
No debaixo, o Resultado de Acerto Crítico deve ser 1.
Está totalmente funcional, no momento. Ainda assim veja abaixo.

Quero fazer o loop aqui nesta parte abaixo, pois a mesma irá se repetir várias vezes. Note que o valor dano06 seria o que deve ser substituído pela variável x para rodar o loop.
Código:

var dano06 = parseFloat(document.getElementById("dano06").value);
""==document.getElementById("dano06").value&&(document.getElementById("dano06").value=0,dano06=0);

Abaixo segue a minha tentativa, ainda assim possui um erro. Antes tinha 3 erros.
Código:

function soma() {

  document.getElementById("resultado00").value = "0";
  document.getElementById("resultado01").value = "0";
 
      var tip = ["dano06", "ha07", "hr08"];
    tip.forEach(function(item, i) {     
 x = parseFloat(document.getElementById("x").value);
      "" == document.getElementById("x").value && (document.getElementById("x").value = 0, x = 0);
    });
 
  document.getElementById("resultado00").value = parseInt(dano06 * 10);
  document.getElementById("resultado01").value = parseInt(dano06 - 10);
}

O input seria o do tipo button.
Código:

<input class="inumber" id="dano06" value="11" onblur="soma()" type="button">

Daemon Daemon  • Sáb 30 Jun 2018 - 10:30

Loop com array escolhida Empty Re: Loop com array escolhida Sáb 30 Jun 2018 - 10:30

Se você quer receber os valores da array na variável x, rode o seguinte código no console e veja o resultado que irá retornar no próprio console:
Código:
$(function() {
    var tip = ["dano06", "ha07", "hr08"],
    x = '';
    tip.forEach(function(item, i) {      
        x = item;
        console.log(x);
    });
});
Se quiser apenas o número que está na array, coloque a seguinte expressão regular:
Código:
console.log(x.match(/\d+/g))

Houdini Houdini  • Sáb 30 Jun 2018 - 15:22

Loop com array escolhida Empty Re: Loop com array escolhida Sáb 30 Jun 2018 - 15:22

Tentei mas não consegui resolver, vou tentar explicar de outra forma. Veja o código abaixo.

Código:

<script>
function soma(){

document.getElementById("resultado00").value="0";
document.getElementById("resultado01").value="0";

var pvd00 = parseFloat(document.getElementById("pvd00").value);
var bva01 = parseFloat(document.getElementById("bva01").value);
var biq02 = parseFloat(document.getElementById("biq02").value);
var pst03 = parseFloat(document.getElementById("pst03").value);
var bva04 = parseFloat(document.getElementById("bva04").value);
var biq05 = parseFloat(document.getElementById("biq05").value);
var dano06 = parseFloat(document.getElementById("dano06").value);

""==document.getElementById("pvd00").value&&(document.getElementById("pvd00").value=0,pvd00=0);
""==document.getElementById("bva01").value&&(document.getElementById("bva01").value=0,bva01=0);
""==document.getElementById("biq02").value&&(document.getElementById("biq02").value=0,biq02=0);
""==document.getElementById("pst03").value&&(document.getElementById("pst03").value=0,pst03=0);
""==document.getElementById("bva04").value&&(document.getElementById("bva04").value=0,bva04=0);
""==document.getElementById("biq05").value&&(document.getElementById("biq05").value=0,biq05=0);
""==document.getElementById("dano06").value&&(document.getElementById("dano06").value=0,dano06=0);

document.getElementById("resultado00").value = parseInt(dano06 * 10);
document.getElementById("resultado01").value = parseInt(dano06 - 10);
}
</script>

Note que existe uma repetição de comandos, no code acima.
O que eu queria era criar um array com as variáveis, exemplo abaixo seria o pvd00, bva01 etc. Pois como existe uma repetição, eu poderia fazer um loop, diminuindo assim o tamanho do código. Ainda assim minhas tentativas não surtem efeito. O código passado pelo [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] acima, funciona sim, porém quando tento colocar o que quero que se repita, o mesmo não funciona. Ainda assim o código dele retorna a variável que está dentro do array, seria quase isso, pois gostaria que as variáveis retornasse da seguinte forma.

[guest]
Código:
var pvd00 = parseFloat(document.getElementById("pvd00").value);
var bva01 = parseFloat(document.getElementById("bva01").value);
var biq02 = parseFloat(document.getElementById("biq02").value);
var pst03 = parseFloat(document.getElementById("pst03").value);
var bva04 = parseFloat(document.getElementById("bva04").value);
var biq05 = parseFloat(document.getElementById("biq05").value);
var dano06 = parseFloat(document.getElementById("dano06").value);

""==document.getElementById("pvd00").value&&(document.getElementById("pvd00").value=0,pvd00=0);
""==document.getElementById("bva01").value&&(document.getElementById("bva01").value=0,bva01=0);
""==document.getElementById("biq02").value&&(document.getElementById("biq02").value=0,biq02=0);
""==document.getElementById("pst03").value&&(document.getElementById("pst03").value=0,pst03=0);
""==document.getElementById("bva04").value&&(document.getElementById("bva04").value=0,bva04=0);
""==document.getElementById("biq05").value&&(document.getElementById("biq05").value=0,biq05=0);
""==document.getElementById("dano06").value&&(document.getElementById("dano06").value=0,dano06=0);
[/guest]


Última edição por Daemon em Sáb 30 Jun 2018 - 16:10, editado 1 vez(es) (Motivo da edição : A tag "code" foi adicionada)

Daemon Daemon  • Sáb 30 Jun 2018 - 16:17

Loop com array escolhida Empty Re: Loop com array escolhida Sáb 30 Jun 2018 - 16:17

Agora eu entendi! Tente isto:
Código:
function soma() {

    document.getElementById("resultado00").value = "0";
    document.getElementById("resultado01").value = "0";
  
    var tip = ["dano06", "ha07", "hr08"],
        x;
    tip.forEach(function(item, i) {
        x = parseFloat(document.getElementById(item).value);
        "" == document.getElementById(item).value && (document.getElementById(item).value = 0, x = 0);
    });

    document.getElementById("resultado00").value = parseInt(dano06 * 10);
    document.getElementById("resultado01").value = parseInt(dano06 - 10);
}
Você estava tentando passar a variável como parâmetro como se fosse uma "String (texto)". Creio que isto irá resultar! Smile

Houdini Houdini  • Sáb 30 Jun 2018 - 16:26

Loop com array escolhida Empty Re: Loop com array escolhida Sáb 30 Jun 2018 - 16:26

Olá, poderia excluir o seguinte comando. Ainda assim, seria possível chamar o resultado?
Pois note que a calculadora não está funcionando, para usar a calculadora clique em ativar e coloque algum número no movimentos por turno e clique fora da caixa.
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

[guest]"" == document.getElementById(item).value && (document.getElementById(item).value = 0, x = 0);[/guest]

Daemon Daemon  • Sáb 30 Jun 2018 - 17:24

Loop com array escolhida Empty Re: Loop com array escolhida Sáb 30 Jun 2018 - 17:24

Como não sei qual resultado final que você deseja, vou te passar uma estrutura pra que você armazene todos os valores dos input definidos dentro da array "tip", dentro de uma array "x":
Código:
function soma() {

    document.getElementById("resultado00").value = "0";
    document.getElementById("resultado01").value = "0";

    var dano06 = document.getElementById("dano06").value;

    var tip = ["ha07", "hr08"],
        x = [];
    tip.forEach(function(item, i) {
        x.push(document.getElementById(item).value);
    });
    document.getElementById("resultado00").value = parseInt(dano06 * 10);
    document.getElementById("resultado01").value = parseInt(dano06 - 10);
}
O "dano06" já está pré-declarado como variável.

Houdini Houdini  • Sáb 30 Jun 2018 - 19:18

Loop com array escolhida Empty Re: Loop com array escolhida Sáb 30 Jun 2018 - 19:18

Aqui veja este exemplo abaixo.

[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

Note que a calculadora não está funcionando. Veja que abaixo eu coloquei os resultados como função de dano06 e ha07. Porém os resultados não são precisos. Não sei por que isto ocorre. Quando deixo apenas em função do dano06, o mesmo funciona perfeitamente. Logo o problema está no ha07, no loop, de alguma forma não está puxando a informação do ha07.
Aqui tem um link com o exemplo: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link]
PS: para usar a calculadora, basta apenas colocar qualquer valor em Movimentos por Turno e clicar fora.

[guest]
document.getElementById("resultado00").value = parseInt((dano06 * 10) + ha07);
document.getElementById("resultado01").value = parseInt((dano06 * ha07) - 10);
[/guest]

Houdini Houdini  • Ter 3 Jul 2018 - 11:34

Loop com array escolhida Empty Re: Loop com array escolhida Ter 3 Jul 2018 - 11:34

Consegui resolver, thanks pela ajuda. Podem fechar.

Daemon Daemon  • Ter 3 Jul 2018 - 22:44

Loop com array escolhida Empty Re: Loop com array escolhida Ter 3 Jul 2018 - 22:44

[sucesso=Tópico resolvido]Tópico movido e arquivado. O autor está satisfeito e/ou a questão foi resolvida.[/sucesso]
Tópico movido para: Arquivo JavaScript & jQuery

Conteúdo patrocinado  • 

Loop com array escolhida Empty Re: Loop com array escolhida

Permissões neste sub-fórum
Não podes responder a tópicos