Você não está conectado. Conecte-se ou registre-se

Loop com array escolhida

Ir em baixo  Mensagem [Página 1 de 1]

1 Loop com array escolhida em Sex Jun 29, 2018 2:51 pm

Houdini

avatar
Membro elite

[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: [Você precisa estar registrado e conectado para ver este link.]
Versão: MODERNBB[/quadrado]

Ver perfil do usuário

2 Re: Loop com array escolhida em Sex Jun 29, 2018 5:55 pm

Daemon

avatar
Admin

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.

Ver perfil do usuário http://zz1856.com

3 Re: Loop com array escolhida em Sex Jun 29, 2018 6:04 pm

Houdini

avatar
Membro elite

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);

Ver perfil do usuário

4 Re: Loop com array escolhida em Sex Jun 29, 2018 6:15 pm

Daemon

avatar
Admin

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.

Ver perfil do usuário http://zz1856.com

5 Re: Loop com array escolhida em Sex Jun 29, 2018 6:37 pm

Houdini

avatar
Membro elite

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.
[Você precisa estar registrado e conectado para ver 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">

Ver perfil do usuário

6 Re: Loop com array escolhida em Sab Jun 30, 2018 10:30 am

Daemon

avatar
Admin

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))

Ver perfil do usuário http://zz1856.com

7 Re: Loop com array escolhida em Sab Jun 30, 2018 3:22 pm

Houdini

avatar
Membro elite

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 [Você precisa estar registrado e conectado para ver 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 Sab Jun 30, 2018 4:10 pm, editado 1 vez(es) (Razão : A tag "code" foi adicionada)

Ver perfil do usuário

8 Re: Loop com array escolhida em Sab Jun 30, 2018 4:17 pm

Daemon

avatar
Admin

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

Ver perfil do usuário http://zz1856.com

9 Re: Loop com array escolhida em Sab Jun 30, 2018 4:26 pm

Houdini

avatar
Membro elite

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.
[Você precisa estar registrado e conectado para ver este link.]

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

Ver perfil do usuário

10 Re: Loop com array escolhida em Sab Jun 30, 2018 5:24 pm

Daemon

avatar
Admin

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.

Ver perfil do usuário http://zz1856.com

11 Re: Loop com array escolhida em Sab Jun 30, 2018 7:18 pm

Houdini

avatar
Membro elite

Aqui veja este exemplo abaixo.

[Você precisa estar registrado e conectado para ver 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: [Você precisa estar registrado e conectado para ver 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]

Ver perfil do usuário

12 Re: Loop com array escolhida em Ter Jul 03, 2018 11:34 am

Houdini

avatar
Membro elite

Consegui resolver, thanks pela ajuda. Podem fechar.

Ver perfil do usuário

13 Re: Loop com array escolhida em Ter Jul 03, 2018 10:44 pm

Daemon

avatar
Admin

[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

Ver perfil do usuário http://zz1856.com

Conteúdo patrocinado


Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum