Problem when concatenating a variable with javascript text

2

In the function cv () a string is stored in the variable send (global variable) and I have problems so that it is concatenated within the letters.forEach () function, does anyone know why?

var tablero = document.getElementById('tablero');
var cartas = [1, 2, 3, 4, 5, 6, 7, 8];
var parejas = cartas.length;
var primerCarta = 0;
var segundaCarta = 0;
var mandar;

//creando cartas de forma aleatoria y generando pares
cartas = cartas.concat(cartas);
cartas = cartas.sort(function() {
return Math.random() - 0.5
});

function cv(){
var seleccion = document.getElementById("text").value;
if (seleccion === "a"){
  mandar = "terrestre";
}else if (seleccion ==="b"){
 mandar = "agua";
}else if (seleccion ==="c"){
  mandar = "aves";
}
}


 cartas.forEach(function(val) {
var div = document.createElement('div');
var imagen = document.createElement('img');
imagen.src = "img-pop/" + (mandar + (val)) + ".jpg";
imagen.className = "tarjeta";
div.id = val;
div.className = "tarjetas"
//console.log(val);
div.appendChild(imagen);
tablero.appendChild(div);

 div.addEventListener('click', function(event) {
 var tarjetatocada = event.target;
 if (primerCarta !== 0 && segundaCarta !== 0) {
 // limpiar banderas
  if (primerCarta.id !== segundaCarta.id) {
    primerCarta.classList.remove('abrir');
    segundaCarta.classList.remove('abrir');
  };
  primerCarta = 0;
  segundaCarta = 0;
  };

  tarjetatocada.classList.add('abrir');
  if (primerCarta === 0) {
  primerCarta = tarjetatocada;
  } else {
  segundaCarta = tarjetatocada;
  if (primerCarta.id === segundaCarta.id) {
    parejas = parejas - 1;
    console.log(parejas);
    }
    if (parejas === 0) {
    //console.log('Ganaste', parejas);
    alert("Ganaste!");
    detenerse();

    //location.reload();
    }
    }
    if (primerCarta === segundaCarta){
    };
    }, true)
    });
    
asked by Daniel R 31.03.2018 в 05:28
source

1 answer

2

the command variable reaches the foreach without value

var mandar = "esteeselvalorinicialquedariaundefinedsinestalinea";

function cv(){
  var seleccion = document.getElementById("text").value;
  switch (seleccion) {
      case "a":
         mandar = "terrestre";
         break;
      case "b":
         mandar = "agua";
         break;
      case "c":
         mandar = "aves";
         break;
      default:
         mandar = "noseleccionado";
  }
}

/* descomentar la siguiente linea para usar los valores segun la funcion cv  */
// cv();
  cartas.forEach(function(val) {
  var div = document.createElement('div');
  var imagen = document.createElement('img');
  imagen.src = "img-pop/" + (mandar + (val)) + ".jpg";
  imagen.className = "tarjeta";

Note 1: I replaced the if else if with a switch to be able to put there a default value that is not global

Note 2: the foreach runs only once, maybe you have to put it in a function and call it from cv?

    
answered by 31.03.2018 / 06:02
source