0

He visto un código por CodePen, en concreto este: https://codepen.io/hi-im-si/pen/DHoup

Quiero retocarlo para incrustarlo en mi web. Resulta que los parametros del array se los pasa por html. Para una mejor "integración" me gustaría pasarlo al código javascript y quitar el código del html, de manera que según mis pocos conocimientos el código del bucle quedaría así:

var elements = ['Hola!','Soy Adri'];
for (var i=0; i<elements.length; i++) {
  var toRotate = elements[i];
  var period = 2000;
  if (toRotate) {
    new TxtType(elements[i], JSON.parse(toRotate), period);
  }

};

Pero!, en la consola me saca el error:

Uncaught SyntaxError: Unexpected token H in JSON at position 0
    at JSON.parse (<anonymous>)
    at HTMLDocument.<anonymous> (core.js:110)

No entiendo el por qué del error y mucho menos cómo solucionarlo.

Muchas gracias de antemano!

Adrián
  • 366
  • 2
  • 14
  • El problema es que JSON.parse espera un objeto JSON válido. En tu caso le estás pasando toRotate que es simplemente el primer elemento de elements (el string Hola). `elements` tiene que ser un string así: `'['Hola!','Soy Adri']'`. Con eso JSON.parse no falla. Aquí tienes más info sobre JSON https://es.stackoverflow.com/questions/164943/cu%C3%A1l-es-la-diferencia-entre-json-y-un-objeto-en-javascript – Kiko_L Feb 25 '19 at 08:01

1 Answers1

1

Hay varios errores en el código que has puesto.

1.- El constructor de la funcion TxtType espera como primer parámetro un elemento del tipo nodo, es decir, un elemento html. Tu le estas pasando un string.

2.- Tal como dice Kiko_L, A JSON.parse no le puedes pasar un string simple.

El siguiente código funciona:

var elements = document.getElementsByClassName('typewrite'); var text = ['Hola!','Soy Adri']; var period = 1000; new TxtType(elements[0], text, period);

Ilsanchez
  • 630
  • 3
  • 10