Contar Caracteres con .length (javascript)

Iniciado por Leguim, 13 Enero 2019, 00:28 AM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

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 (javascript) [Seleccionar]
var text = document.getElementsByClassName('text_publicacion');
var text_cant = document.getElementsByClassName('text_publicacion').length;
var text_char = [];

for(var i = 0; i < text_cant; i++)
{
text_char[i] = text[i].length;
}

for(var i = 0; i < text_cant; i++)
{
if(text_char[i] > 0 && text_char[i] <= 85)
{
text[i].style.fontSize = "22px";
}
}

for(var i = 0; i < text_cant; i++)
{
if(text_char[i] > 85)
{
text[i].style.fontSize = "15px";
}
}


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"

#!drvy

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 (javascript) [Seleccionar]
var text = document.getElementsByClassName('text_publicacion');

for (var max = text.length, i = 0; i < max; ++i) {
   var element = text[i];
   var element_value = element.textContent;
   
   if (element_value.length > 0 && element_value.length < 85) {
       element.style.fontSize = "22px";
   }
   
   else if (element_value.length > 85) {
       element.style.fontSize = "12px";
   }
}


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

Saludos