Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 13 Enero 2019, 00:28 am



Título: Contar Caracteres con .length (javascript)
Publicado por: Leguim en 13 Enero 2019, 00:28 am
Buenas tardes, estoy en un problema  :silbar:

Y es que necesito obtener los caracteres de varias cantidades de caracteres con la misma clase.

Lo que tengo hasta hora es esto..

Código
  1. var text = document.getElementsByClassName('text_publicacion');
  2. var text_cant = document.getElementsByClassName('text_publicacion').length;
  3. var text_char = [];
  4.  
  5. for(var i = 0; i < text_cant; i++)
  6. {
  7. text_char[i] = text[i].length;
  8. }
  9.  
  10. for(var i = 0; i < text_cant; i++)
  11. {
  12. if(text_char[i] > 0 && text_char[i] <= 85)
  13. {
  14. text[i].style.fontSize = "22px";
  15. }
  16. }
  17.  
  18. for(var i = 0; i < text_cant; i++)
  19. {
  20. if(text_char[i] > 85)
  21. {
  22. text[i].style.fontSize = "15px";
  23. }
  24. }

El problema es que siempre que uso un alert o un console.log para ver porque no funciona por ejemplo: hago alert(text[3].length);

sale "Undefined"


Título: Re: Contar Caracteres con .length (javascript)
Publicado por: #!drvy en 15 Enero 2019, 13:09 pm
Hola,

No hagas varios for para lo mismo. La lógica la podrías (y deberías) aplicar en uno solo, así evitas gastar ciclos de CPU innecesarios y terminas de ejecutar tu tarea antes. Tampoco es necesario realmente almacenar los valores en un array aunque bueno, si quieres hacerlo...

Y tu problema realmente, es que no estas obteniendo el length del contenido. Los contenedores del DOM (véase, etiquetas html tipo span, p, div y cualquier otra..) tienen sus propiedades referentes al texto que contienen. Los inputs lo mismo. Para contenedores DOM, si solo quieres texto, lo más seguro es usar textContent, si lo que tienes es un elemento input, usas value.

Código
  1. var text = document.getElementsByClassName('text_publicacion');
  2.  
  3. for (var max = text.length, i = 0; i < max; ++i) {
  4.    var element = text[i];
  5.    var element_value = element.textContent;
  6.  
  7.    if (element_value.length > 0 && element_value.length < 85) {
  8.        element.style.fontSize = "22px";
  9.    }
  10.  
  11.    else if (element_value.length > 85) {
  12.        element.style.fontSize = "12px";
  13.    }
  14. }

https://developer.mozilla.org/es/docs/Web/API/Node/textContent

Saludos


Título: Re: Contar Caracteres con .length (javascript)
Publicado por: Leguim en 17 Enero 2019, 20:13 pm
Gracias amigo!  ;-) ;-)