Stack Overflow en español Asked by Carlos Roberto Luna Ochoa on October 4, 2020
Quiero que al hacer click en un boton primero verifique si el valor existe en un JSON que obtiene desde localStorage y si no existe lo guarde, pero cuando realiza la funcion aunque el valor exista sigue añadiendo el arreglo. La funcion es:
$('#btnNP').click(function(){
if ($.trim($('#txtplayer').val())==''){
alert('Ingresa tu nombre de jugador');
$('#txtpalabra').focus();
return false;
}
var jugador =$('#txtplayer').val();
for(var i in Jugadores)
{
var con = JSON.parse(Jugadores[i]);
if(con[i].player === j){
console.log(con[i].player);
}
if(con.player == jugador){
console.log(con.player);
}
else{
var jugador_push = JSON.stringify({
"player" : jugador,
"score" : 0
});
Jugadores.push(jugador_push);
localStorage.setItem("Jugadores", JSON.stringify(Jugadores));
}
}
});
Bien, disculpa la demora, el Fiddle no me dejó compartirlo así que lo puse en un CodePen:
Esta así:
// find elements
var button = $("button")
window.localStorage.setItem("Jugadores","[]");
// handle click and add class
button.on("click", function(){
if ($.trim($('#txtplayer').val())==''){
alert('Ingresa tu nombre de jugador');
$('#txtpalabra').focus();
return false;
}
var jugador =$('#txtplayer').val();
var Jugadores = localStorage.getItem("Jugadores");
Jugadores = JSON.parse(Jugadores);
if(Jugadores.length == 0)
{
var jugador_push = JSON.stringify({
"player" : jugador,
"score" : 0
});
Jugadores.push(jugador_push);
localStorage.setItem("Jugadores", JSON.stringify(Jugadores));
}
else
{
var yaExiste = false;
for(var i in Jugadores)
{
var con = JSON.parse(Jugadores[i]);
//if(con[i].player === j){
//console.log(con[i].player);
//}
if(con.player == jugador){
yaExiste = true;
}
}
if(yaExiste)
{
console.log(con.player);
}
else
{
var jugador_push = JSON.stringify({
"player" : jugador,
"score" : 0
});
Jugadores.push(jugador_push);
localStorage.setItem("Jugadores", JSON.stringify(Jugadores));
}
}
console.log(localStorage.getItem("Jugadores"))
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="banner-message">
<p>Jugadores</p>
<input id="txtplayer" value=""/>
<button>Agregar</button>
</div>
El problema radica que cuando haces el FOR, recorre el arreglo entero, y eventualmente encuentra alguno que no coincide, entonces lo agrega. Utilizando una bandera yaExiste = false
Nos permite revisar el arreglo y ya que vimos que ya existe, no agregarlo, y en caso contrario agregarlo. Espero este claro, sino cualquier duda avisame :)
**No funcione el codigo aquí por el localstorage, te dejo el link del Codepen
Answered by TppShaka77 on October 4, 2020
0 Asked on January 24, 2021 by jorge-galibert
1 Asked on January 24, 2021 by joel-fernando
0 Asked on January 24, 2021 by ricardo-lpez
1 Asked on January 23, 2021 by valeria-lvarez
0 Asked on January 23, 2021 by esteban-baquero
1 Asked on January 23, 2021 by pancho-bolatti
1 Asked on January 22, 2021 by david-reyes
1 Asked on January 22, 2021 by juan-luis
0 Asked on January 22, 2021 by kenneth-steve-aguilar
0 Asked on January 21, 2021 by isbel-ordo
1 Asked on January 21, 2021 by qwdas123
0 Asked on January 21, 2021 by dany-villarroel
1 Asked on January 21, 2021 by jose-leonardo-quiones
0 Asked on January 21, 2021 by germanccho
0 Asked on January 20, 2021 by jodurpar
1 Asked on January 20, 2021 by carlos-aburto
0 Asked on January 20, 2021 by zilogz80
1 Asked on January 19, 2021 by cristian-prieto-beltran
Get help from others!
Recent Answers
© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir