Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/11/2014, 11:35
Halder
 
Fecha de Ingreso: noviembre-2014
Mensajes: 2
Antigüedad: 9 años, 6 meses
Puntos: 0
Problema con JSON.parse

Hola, me estoy tirando de los pelos porque no sé por qué falla esto. El problema está aquí:

Código:
localStorage.cr = (localStorage.cr || "0.00");
    localStorage.memoria = (localStorage.memoria || "[]");    
    var t, cl = $("#crono");
    var listado_marcas = JSON.parse(localStorage.memoria)
El script no se ejecuta si intento hacerle el parse a localStorage.memoria, pero si lo cambio, por ejemplo, por el .cr sí que funciona.

Dejo el resto del código por si el fallo está en otro lado... pero entonces no entiendo por qué cambiando .memoria por .cr funciona perfectamente.

Código:
<!DOCTYPE html>
<html>
<head><title>Event Example</title><meta charset="UTF-8">
<script type="text/javascript" src="zepto.min.js" > </script>
<script type="text/javascript">
  $(function(){ 
    localStorage.cr = (localStorage.cr || "0.00");
    localStorage.memoria = (localStorage.memoria || "[]");    
    var t, cl = $("#crono");
    var listado_marcas = JSON.parse(localStorage.memoria)

    function incremento() {localStorage.cr = +localStorage.cr + 0.01}
    function mostrar()  { cl.html((+localStorage.cr).toFixed(2));};
    function arrancar() { t=setInterval(function() {incremento(); mostrar()}, 10);};
    function parar()    {  clearInterval(t); t=undefined } 
    function marcador() { if ($('#crono') != undefined) {
    	listado_marcas.push($("#crono").html());
    var i, marcas = "";
    for (i = 0; i < listado_marcas.length; ++i) {
    marcas += "<ol>" + listado_marcas[i] + " segundos</ol>";
    $("#marcas").html(marcas);}
}
    else {listado_marcas = ""}
    }; 
    function cambiar()  { if (!t) arrancar(); else {parar(); marcador()} };

    $("#cambiar").on('click', cambiar);
    $("#inicializar").on('click', function(){ if (t) {mostrar} else {localStorage.cr = "0.00"; $("#marcas").html(""); localStorage.memoria = (localStorage.memoria || "[]"); mostrar()}});
    mostrar();
  });
</script>
</head>
<body>
<h2>Cronómetro</h2>

<h2><span id="crono"> 0.0 </span> segundos </h2>

<button type="button" id="cambiar"> arrancar/parar </button>
<button type="button" id="inicializar">  inicializar </button>
<div id="marcas"></div>
</body>
</html>
Gracias, un saludo y buen foro.