Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Cambio de Id por clase

Estas en el tema de Cambio de Id por clase en el foro de Javascript en Foros del Web. Hola. Tengo esta función: Código: function changeText(idElement) { var element = document.getElementById('elemento'); if (idElement) { if (element.innerHTML === 'Leer más...') element.innerHTML = 'Cerrar'; else { ...
  #1 (permalink)  
Antiguo 16/01/2015, 04:00
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Cambio de Id por clase

Hola.

Tengo esta función:

Código:
function changeText(idElement) {
    var element = document.getElementById('elemento');
    if (idElement) {
        if (element.innerHTML === 'Leer más...') element.innerHTML = 'Cerrar';
        else {
            element.innerHTML = 'Leer más...';
        }
    }
}

 <a id="elemento" onClick="javascript:changeText(1)">Leer más...</a>
El problema es que "elemento" no va a ser una id sino una clase.

¿Se puede cambiar?

He visto que document.getElementById se debe sustituir por document.getElementByClass, pero en el resto hay algo que no me acaba de funcionar.

Gracias.
  #2 (permalink)  
Antiguo 16/01/2015, 09:05
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Cambio de Id por clase

En lugar de getElementById podés usar la api selector:
https://developer.mozilla.org/en-US/....querySelector
https://developer.mozilla.org/en-US/...erySelectorAll
o getElementByClassName:
https://developer.mozilla.org/en-US/...ntsByClassName
  #3 (permalink)  
Antiguo 16/01/2015, 11:08
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: Cambio de Id por clase

Preferiría usar getElementsByClassName, pero no me está resultando por alguna razón.
  #4 (permalink)  
Antiguo 16/01/2015, 11:14
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Cambio de Id por clase

Recordá que getElementsByClassName es una colección, la cual hay que referenciar por índice:
Código:
var els=document.getElementsByClassName('soldier');
//el primer elemento de la clase soldier:
var soldado1=els[0]
//el segundo elemento de la clase soldier:
var soldado2=els[1];
  #5 (permalink)  
Antiguo 16/01/2015, 11:37
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: Cambio de Id por clase

En qué browsers pensás usarlo? Tené en cuenta que getElementsByClassName no es estandar.
Por ejemplo en IE 8 no va a funcionar.

Podrías hacer algo como ésto para asegurarte que funcione en cualquier browser:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     var links = document.getElementsByTagName("a");
  3.  
  4.     for (var a = 0; a < links.length; a++) {
  5.         if (links[a].className == 'elemento') {
  6.             if (links[a].innerHTML === 'Leer más...') {
  7.                 links[a].innerHTML = 'Cerrar';
  8.             } else {
  9.                 links[a].innerHTML = 'Leer más...';
  10.             }
  11.         }
  12.     }
  13. </script>

Última edición por GeekGirl; 16/01/2015 a las 11:46
  #6 (permalink)  
Antiguo 16/01/2015, 12:34
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: Cambio de Id por clase

Tiene que funcionar en todos, claro.

Y el script que muestras no me funciona. ¿Lo has probado tú?

Última edición por JUMASOL; 16/01/2015 a las 12:39
  #7 (permalink)  
Antiguo 16/01/2015, 12:45
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Cambio de Id por clase

Usa querySelector y no des soporte a navegadores anteriores a IE8.
  #8 (permalink)  
Antiguo 16/01/2015, 14:16
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: Cambio de Id por clase

Te di una idea. No lo probé porque no tengo el html. Falta por supuesto en evento onclick.
Probá esto:

Código Javascript:
Ver original
  1. var links = document.getElementsByTagName("a");
  2.  
  3.     for (var a = 0; a < links.length; a++) {
  4.         if (links[a].className == 'elemento') {
  5.             links[a].onclick = function(){
  6.                 if (this.innerHTML === 'Leer más...') {
  7.                     this.innerHTML = 'Cerrar';
  8.                 } else {
  9.                     this.innerHTML = 'Leer más...';
  10.                 }
  11.             }
  12.         }
  13.     }

Con el código como te lo paso, no tenés necesidad de llamar al evento onclick en tus etiqetas <a>. Con esto va a arrancar cuando se cliquee directamente.
  #9 (permalink)  
Antiguo 16/01/2015, 15:54
 
Fecha de Ingreso: noviembre-2005
Mensajes: 889
Antigüedad: 18 años, 5 meses
Puntos: 8
Respuesta: Cambio de Id por clase

Solucionado.

Coloco el código que funciona completo para el que le pueda interesar:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<script type="text/javascript">
function changeText() {    
var links = document.getElementsByTagName("a");
 
    for (var a = 0; a < links.length; a++) {
        if (links[a].className === 'elemento') {
            links[a].onclick = function(){
                if (this.innerHTML === 'Leer más...') {
                    this.innerHTML = 'Cerrar';
                } else {
                    this.innerHTML = 'Leer más...';
                }
            };
        }
    }
}        
</script>

</head>
<body>
<a class="elemento" onClick="changeText()">Leer más...</a>
<a class="elemento" onClick="changeText()">Leer más...</a>
<a class="elemento" onClick="changeText()">Leer más...</a> 
</body>
</html>
Gracias por vuestro interés.
  #10 (permalink)  
Antiguo 20/01/2015, 06:31
Avatar de GeekGirl  
Fecha de Ingreso: julio-2014
Mensajes: 423
Antigüedad: 9 años, 9 meses
Puntos: 44
Respuesta: Cambio de Id por clase

De nada :P

Etiquetas: clase, funcion, html
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 07:18.