Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Eliminar texto desde coma (incluida)

Estas en el tema de Eliminar texto desde coma (incluida) en el foro de Javascript en Foros del Web. Hola. Tengo este div que se rellena con un autoformulario de Google. Código: <div class="field"> A Coruña, Galicia, España </div> Sólo debe mostrarse la primera ...
  #1 (permalink)  
Antiguo 16/11/2016, 06:41
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Eliminar texto desde coma (incluida)

Hola.

Tengo este div que se rellena con un autoformulario de Google.

Código:
<div class="field">
A Coruña, Galicia, España
</div>
Sólo debe mostrarse la primera palabra, y eliminar todo desde la primera coma incluida ella misma.

El class está dentro de otros y está ya identificado así:

document.querySelector('.form4 .group .field')

¿Se os ocurre cómo seguir para dejar sólo "A Coruña" dentro del div?

Gracias.

Última edición por JUMASOL; 16/11/2016 a las 08:00
  #2 (permalink)  
Antiguo 16/11/2016, 09:37
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 9 años
Puntos: 86
Respuesta: Eliminar texto desde coma (incluida)

Puedes hacerlo con el método split() https://developer.mozilla.org/es/doc...s/String/split
  #3 (permalink)  
Antiguo 16/11/2016, 11:23
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 10 años
Puntos: 91
Respuesta: Eliminar texto desde coma (incluida)

http://codepen.io/anon/pen/RoGYmd?editors=1010
ahi te hice el ejemplo ;)
  #4 (permalink)  
Antiguo 16/11/2016, 13:19
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 9 años
Puntos: 86
Respuesta: Eliminar texto desde coma (incluida)

Eso es. Sólo un apunte. En lugar de usar innerHTML ex más conveniente usar textContent
  #5 (permalink)  
Antiguo 23/11/2016, 15:20
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Respuesta: Eliminar texto desde coma (incluida)

Funciona de maravilla.

Pero ahora tengo un problema a la hora de aplicarlo a la página, porque la estructura indicada es sólo el final de un identificador específico de clase. Así por ejemplo:

Código:
<div class="field-especifico">
  <div class="field-b">
     <div class="field">
        A Coruña, Galicia, España
     </div>
  </div>
</div>
He utilizado esta modificación:

Código:
var field = document.querySelector("field-especifico .field-b .field").textContent;
var field2 = field.split(",", 1);

document.querySelector(".field").textContent = field2;
El problema es que esa estructura se repite a lo largo del sitio, y el elemento a sustituir no está en la primera instancia.

Inserto el código y me encuentro con que no sustituye nada, y después de un repaso de toda la página veo que "A Coruña" está metido sustituyendo el contenido del primer juego de divs, mucho más arriba en la página, quedando así.

Código:
  <div class="field-b">
     <div class="field">
        A Coruña
     </div>
  </div>
Por lo que tengo aprendido, querySelector sólo selecciona la primera instancia, así que ese es el problema. En otra parte de la web utilicé un sistema parecido para sustituir palabras con un localización muy precisa para exactamente la misma estructura utilizando querySelectorAll, así:

Código:
querySelectorAll('.field-especifico .field-b .field');
Así puedo localizar el div concreto distintivo (en este caso field-especifico).

Por alguna razón no me funciona esta vez.

¿Me podéis decir dónde falla?

Última edición por JUMASOL; 23/11/2016 a las 17:09
  #6 (permalink)  
Antiguo 24/11/2016, 15:59
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 9 años
Puntos: 86
Respuesta: Eliminar texto desde coma (incluida)

No se tienes problemas con los selectores o con el nodeList. Me inclino por este segundo.
Con querySelectorAll se obtiene un nodeList y cada elemento de esta lista debe de ser accedido por su indice de manera "estática o dinámica". Supongamos que tienes este html
Código HTML:
Ver original
  1. <div>hola</div>
  2. <div>cómo</div>
  3. <div>estás</div>
Para acceder a cada elemento de manera estática
Código Javascript:
Ver original
  1. var divs = document.querySelectorAll('div'),
  2. div1 = divs[0].textContent,
  3. div2 = divs[1].textContent,
  4. div3 = divs[2].textContent;
  5. console.log(div1 + ' ' + div2 + ' ' + div3);
De manera dinámica
Código Javascript:
Ver original
  1. [].forEach.call(document.querySelectorAll('div'), function(elem) {
  2. console.log(elem.textContent);
  3. });
  #7 (permalink)  
Antiguo 25/11/2016, 02:25
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Respuesta: Eliminar texto desde coma (incluida)

Hola a todos.

Acabo de comprobar que en este caso no es necesaria la especificación completa, sino que basta con indicar el div distintivo para que se apliquen las variables de forma correcta.

Sólo hace falta esto:

Código:
var field = document.querySelector("field-especifico").textContent;
var field2 = field.split(",", 1);

document.querySelector(".field").textContent = field2;
En cualquier caso, esto me ha servido para hacer un cierto estudio de querySelector y querySelectorAll, así como sobre la diferencia entre innerHTML y textContent según las valiosas aclaraciones de mpozo.

Gracias a todos.
  #8 (permalink)  
Antiguo 30/11/2016, 11:45
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Respuesta: Eliminar texto desde coma (incluida)

Hola.

Volviendo al tema de la repetición de clases a lo largo del documento, he intentado aplicar esto:

Código:
function myFunction() {
    var field = document.querySelectorAll(".field-especifico").innerHTML;
    var field2 = field.split(",", 1);
    var i;
    for (i = 0; i < field.length; i++) {
        field[i].innerHTML = field2;
    }
}
Sin resultados. Ahora mismo estoy intentando ver por qué no funciona, ni siquiera en la primera instancia, pero si alguien puede hacerme una indicación se lo agradecería.

Última edición por JUMASOL; 30/11/2016 a las 12:11
  #9 (permalink)  
Antiguo 30/11/2016, 12:28
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Respuesta: Eliminar texto desde coma (incluida)

Hola a todos.

Acabo de comprobar que en este caso no es necesaria la especificación completa, sino que basta con indicar el div distintivo para que se apliquen las variables de forma correcta.

Sólo hace falta esto:

Código:
var field = document.querySelector(".field-especifico");
var field2 = field.split(",", 1);

document.querySelector(".field").textContent = field2;
En cualquier caso, esto me ha servido para hacer un cierto estudio de querySelector y querySelectorAll, así como sobre la diferencia entre innerHTML y textContent según las valiosas aclaraciones de mpozo.

Gracias a todos.
  #10 (permalink)  
Antiguo 30/11/2016, 12:36
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eliminar texto desde coma (incluida)

Estas tomando el queryselectorall como un solo valor, es un arreglo, ve como andas con esto:

Código Javascript:
Ver original
  1. function myFunction() {
  2. var field = document.querySelectorAll(".field-especifico");
  3.     for(var k=0;k<field.length;k++){
  4.     field2 = field[k].split(",");
  5.     field[k].innerHTML = field2[0];
  6.     }
  7. }

  #11 (permalink)  
Antiguo 30/11/2016, 12:45
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Respuesta: Eliminar texto desde coma (incluida)

Hola Álvaro.

Tampoco me funciona. Ni siquiera con el primer selector.
  #12 (permalink)  
Antiguo 30/11/2016, 13:01
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eliminar texto desde coma (incluida)

Eso pasa por hacer las cosas a la rápida:

Código Javascript:
Ver original
  1. function myFunction() {
  2. var field = document.querySelectorAll(".field-especifico");
  3.     for(var k=0;k<field.length;k++){
  4.     field2 = field[k].innerHTML.split(",");
  5.     field[k].innerHTML = field2[0];
  6.     }
  7. }

edito:

más fácil aun:


Código Javascript:
Ver original
  1. function myFunction() {
  2. var field = document.querySelectorAll(".field-especifico");
  3.     for(var k=0;k<field.length;k++){
  4.     field[k].innerHTML = field[k].innerHTML.split(",")[0];
  5.        }
  6. }
  #13 (permalink)  
Antiguo 30/11/2016, 13:07
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Respuesta: Eliminar texto desde coma (incluida)

Tampoco funciona, ni uno ni otro.

Puedes probarlo aquí:

http://codepen.io/anon/pen/RoGYmd?editors=1010

A mí no me funciona.

Última edición por JUMASOL; 30/11/2016 a las 13:13
  #14 (permalink)  
Antiguo 30/11/2016, 13:14
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eliminar texto desde coma (incluida)

raro a mi sí, limpia caché talvez?
  #15 (permalink)  
Antiguo 30/11/2016, 13:16
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Respuesta: Eliminar texto desde coma (incluida)

No, eso no es. ¿Lo has probado en CodePen?
  #16 (permalink)  
Antiguo 30/11/2016, 13:19
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eliminar texto desde coma (incluida)

No man.
Ojo estoy trabajando con

Código HTML:
Ver original
  1. <div class="field-especifico">valores1</div>
  2. <div class="field-especifico">valores2</div>
  3. ...
  4. <div class="field-especifico">valoresN-1</div>
  5. <div class="field-especifico">valoresN</div>

El problema es que estas usando ", " yo estabá usando ","

Código Javascript:
Ver original
  1. function myFunction(){
  2. var field = document.querySelectorAll(".field-especifico");
  3.     for(var k=0;k<field.length;k++){
  4.     field[k].innerHTML = field[k].innerHTML.split(", ")[0];
  5.     }
  6. }

ahí debería andar

Última edición por alvaro_trewhela; 30/11/2016 a las 13:27
  #17 (permalink)  
Antiguo 30/11/2016, 13:28
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 9 años
Puntos: 86
Respuesta: Eliminar texto desde coma (incluida)

Cita:
Iniciado por JUMASOL Ver Mensaje
Hola.

Volviendo al tema de la repetición de clases a lo largo del documento, he intentado aplicar esto:

Código:
function myFunction() {
    var field = document.querySelectorAll(".field-especifico").innerHTML;
    var field2 = field.split(",", 1);
    var i;
    for (i = 0; i < field.length; i++) {
        field[i].innerHTML = field2;
    }
}
Sin resultados. Ahora mismo estoy intentando ver por qué no funciona, ni siquiera en la primera instancia, pero si alguien puede hacerme una indicación se lo agradecería.
Ya está explicado aquí http://www.forosdelweb.com/f13/elimi...7/#post4808604
  #18 (permalink)  
Antiguo 30/11/2016, 13:55
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Respuesta: Eliminar texto desde coma (incluida)

Si te refieres a esto:

Código:
<div class="field-especifico">valores1, ggg</div>
<div class="field-especifico">valores2, bbbb</div>
...
<div class="field-especifico">valoresN-1, nnn</div>
<div class="field-especifico">valoresN, ggg</div>

Código:
function myFunction(){
var field = document.querySelectorAll(".field-especifico");
    for(var k=0;k<field.length;k++){
    field[k].innerHTML = field[k].innerHTML.split(", ")[0];
    }
}
No elimina nada.

Lo del punto #6 ya está mirado, pero no lo aplico bien, o hay algún problema que no consigo ver.
  #19 (permalink)  
Antiguo 30/11/2016, 14:16
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 9 años
Puntos: 86
Respuesta: Eliminar texto desde coma (incluida)

No veo ningún error en el código que muestras. El error debe estar el que no muestras o no está. Se me ocurre que estés invocando la función antes de que el dom esté cargado. Si te funciona este, entonces ese es el problema
Código Javascript:
Ver original
  1. <!DOCTYPE html>
  2. <html dir="ltr" lang="es-es">
  3.     <head>
  4.         <title></title>
  5.         <meta charset="utf-8">
  6.         <meta name="viewport" content="user-scalable=yes, width=device-width, initial-scale=1">
  7.         <style>
  8.  
  9.         </style>
  10.         <script>
  11.             document.addEventListener('DOMContentLoaded', myFunction, false);
  12.  
  13.             function myFunction(){
  14.  
  15.                 [].forEach.call(document.querySelectorAll('.field-especifico'), function(elem) {
  16.                     elem.textContent = elem.textContent.split(',', 1);
  17.                 });
  18.             }
  19.         </script>
  20.     </head>
  21.     <body>
  22. <div class="field-especifico">valores1, ggg</div>
  23. <div class="field-especifico">valores2, bbbb</div>
  24. ...
  25. <div class="field-especifico">valoresN-1, nnn</div>
  26. <div class="field-especifico">valoresN, ggg</div>
  27.     </body>
  28. </html>
  #20 (permalink)  
Antiguo 30/11/2016, 14:17
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Eliminar texto desde coma (incluida)

Mira, duramente lo estoy probando así:

Código HTML:
Ver original
  1. <script type="text/javascript">
  2. function myFunction(){
  3. var field = document.querySelectorAll(".field-especifico");
  4.     for(var k=0;k<field.length;k++){
  5.     field[k].innerHTML = field[k].innerHTML.split(",")[0];
  6.    }
  7. }
  8.    
  9. <div class="field-especifico">hola,asd,dkd</div>
  10. <div class="field-especifico">chao,eif9,fkd</div>
  11. <div class="field-especifico">ch32903o,sklseif9,398383fkd</div>
  12. <input type="button" onclick="myFunction();" value="Cambiar" />

Y me corre, si no te corre ni ídea
  #21 (permalink)  
Antiguo 30/11/2016, 14:44
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 19 años
Puntos: 8
Respuesta: Eliminar texto desde coma (incluida)

He combiando ambas soluciones en esto:

Código:
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', myFunction, false);
function myFunction(){
var field = document.querySelectorAll(".field-especifico");
for(var k=0;k<field.length;k++){
field[k].innerHTML = field[k].innerHTML.split(",")[0];
}
}
</script>
Y funciona.

Tu propuesta, mpzo, me hacía un efecto de borrarme todos los divs dentro de .field-especifico. Me dejaba esto:

Código:
<div class="field-especifico">
  <div class="field-b">
     <div class="field">
        A Coruña, Galicia, España
     </div>
  </div>
</div>
Así:

Código:
<div class="field-especifico">

        A Coruña

</div>

No comprendo exactamente el porqué. Pero no puede ser, porque "A Coruña" tiene unos estilos por css muy concretos por asociación de field-b y field, que luego se repiten en otras partes del sitio sin relación con este problema.

Esta vez sí que está solucionado.

Un gran saludo.
  #22 (permalink)  
Antiguo 30/11/2016, 15:33
 
Fecha de Ingreso: noviembre-2015
Mensajes: 231
Antigüedad: 9 años
Puntos: 86
Respuesta: Eliminar texto desde coma (incluida)

Sí, eso ocurre por que no recordaba la estructura. Se trata de cambiar textContent por innerHTML. Lo que no entiendo o quizás no he leído con detenimiento es por qué usas como selector de referencia field-especifico, en lugar de field con lo que resuelves el problema que tenías aquí
Código Javascript:
Ver original
  1. <!DOCTYPE html>
  2. <html dir="ltr" lang="es-es">
  3.     <head>
  4.         <title></title>
  5.         <meta charset="utf-8">
  6.         <meta name="viewport" content="user-scalable=yes, width=device-width, initial-scale=1">
  7.         <style>
  8.  
  9.         </style>
  10.         <script>
  11.             document.addEventListener('DOMContentLoaded', myFunction, false);
  12.  
  13.             function myFunction(){
  14.  
  15.                 [].forEach.call(document.querySelectorAll('.field'), function(elem) {
  16.                     elem.textContent = elem.textContent.split(',', 1);
  17.                 });
  18.             }
  19.         </script>
  20.     </head>
  21.     <body>
  22.  
  23. <div class="field-especifico">
  24.   <div class="field-b">
  25.      <div class="field">
  26.         A Coruña, Galicia, España
  27.      </div>
  28.   </div>
  29. </div>
  30.  
  31.  
  32. <div class="field-b">
  33.      <div class="field">
  34.         A Coruña, Galicia, España
  35.      </div>
  36. </div>
  37.  
  38.  
  39.  
  40. <div class="field-especifico">
  41.      <div class="field">
  42.         A Coruña, Galicia, España
  43.      </div>
  44. </div>
  45.  
  46.  
  47.  
  48. <div class="field">
  49.         A Coruña, Galicia, España
  50. </div>
  51.  
  52.  
  53.     </body>
  54. </html>

Etiquetas: coma
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:15.