Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: mapers en 3 Diciembre 2013, 17:01 pm



Título: Cambiar propiedades a un Class
Publicado por: mapers en 3 Diciembre 2013, 17:01 pm
Buenas señores del foro necesito de su ayuda;tengo varios elementos de la siguiente forma:

Código
  1.  
  2. <a href="AccionesModerador.jsp?AjaxPar= <%=rsPagination.getString("idModeradores")%> &Action=Est&Proc=<%=CambiarEstado%>"  class="CambiarEnlaceModerador"> <%=CambiarEstado%></a>
  3.  
  4.  

Todos los elementos tienen la misma class ; ahora mi pregunta es a traves de  javascript como puedo cambiar sus propiededes a todos mis elementos, en especifico necesito cambiar a traves de innerHTML que modifique el texto que contenga  gracias


Título: Re: Cambiar propiedades a un Class
Publicado por: #!drvy en 3 Diciembre 2013, 17:39 pm
Ej jQuery seria bastante sencillo gracias a sus selectores. En javascript nativo es un poco mas complicado.

Existe el selector getElementsByClassName pero el soporte en IE empieza desde la versión 9.

Código
  1. var elementos = document.getElementsByClassName('CambiarEnlaceModerador');
  2. for(var i=0; i<elementos.length; ++i){
  3.   elementos[i].innerHTML = 'Prueba';
  4. }

Existen varias alternativas.. una de ellas es obtener todos los elementos del mismo tag y comparar mediante atributos. Otra asignar a todos los elementos que quieras modificar un ID que solo varia mediante un numero al final.

En el caso de todo por tag.
Código
  1. var elementos = document.getElementsByTagName('a');
  2. for(var i=0; i<elementos.length; ++i){
  3.   if(elementos[i].getAttribute('class')==='CambiarEnlaceModerador'){
  4.      elementos[i].innerHTML = 'Prueba';
  5.   }
  6. }

El soporte para getElementsByTagName se añade en IE 5.5 así que no deberías tener problema. El problema seria el getAttribute que se incluye en la versión 8... pero la 8 yo creo que es mas que suficiente.

Saludos


Título: Re: Cambiar propiedades a un Class
Publicado por: EFEX en 3 Diciembre 2013, 18:01 pm
Siguiendo con JQuery como decia drvy ;D, prodria ser algo asi...

Código
  1. $(document).ready(function() {
  2. $('.CambiarEnlaceModerador').html(function(){
  3. //cambiar los atributos
  4. $(this).attr('href', 'Nuevadireccion.html');
  5. $(this).attr('class', 'CambiarClass');
  6. //cambiar el nombre
  7. return 'prueba';
  8. });
  9. });
  10.  

Y ademas das soporte a versiones mas antiguas de los navegadores.
http://jquery.com/
http://caniuse.com/#feat=getelementsbyclassname


Título: Re: Cambiar propiedades a un Class
Publicado por: mapers en 3 Diciembre 2013, 22:33 pm
Y si desearia cambiar el mismo atributo pero con la condicion de que <%=CambiarEstado%> tenga identificadores:

Si CambiarEstado=='1' que se escriba 'Prueba1'
Si CambiarEstado=='2' que se escriba 'Prueba2'
......

gracias por su tiempo


Título: Re: Cambiar propiedades a un Class
Publicado por: EFEX en 3 Diciembre 2013, 23:08 pm
Si entendi bien.. no hace falta condicionales, podes concatenarlo.

Código
  1. <html>
  2. <head>
  3. <!-- <script src="jquery-2.0.3.min.js"></script> -->
  4. <script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
  5. <script type="text/javascript">
  6. $(document).ready(function() {
  7. $('.CambiarEnlaceModerador').html(function(){
  8. //Obtener estado antes de generar cambios
  9. estado = $(this).text();
  10. //cambiar los atributos
  11. $(this).attr('href', 'Nuevadireccion.html');
  12. $(this).attr('class', 'CambiarClass');
  13. //cambiar el nombre
  14. //y concatenamos
  15. return 'prueba'+estado;
  16. });
  17. });
  18. </script>
  19. <style type="text/css">
  20. .CambiarEnlaceModerador{background-color: red;}
  21. .CambiarClass{background-color: green;}
  22. </style>
  23. </head>
  24. <body>
  25. <a href="#" class="CambiarEnlaceModerador">1</a>
  26. <a href="#" class="CambiarEnlaceModerador">2</a>
  27. <a href="#" class="CambiarEnlaceModerador">3</a>
  28. <a href="dir.html" class="CambiarEnlaceModerador">4</a>
  29. <a href="#" class="CambiarEnlaceModerador">5</a>
  30. <a href="#" class="CambiarEnlaceModerador">6</a>
  31. </body>
  32. </html>


Título: Re: Cambiar propiedades a un Class
Publicado por: mapers en 3 Diciembre 2013, 23:17 pm
Estoy implementado esta logica :


Código
  1.    var elementos = document.getElementsByTagName('a');
  2.    for(var i=0; i<elementos.length; ++i){
  3.      if(elementos[i].getAttribute('class')==='CambiarEnlaceModerador'){
  4.         if (elementos[i].innerHTML === 'Suspender') {
  5.                    elementos[i].innerHTML = 'Play';
  6.                }
  7.                if (elementos[i].innerHTML === 'Activo') {
  8.                    elementos[i].innerHTML = 'Active';
  9.                }
  10.      }
  11.    }
  12.  
  13.  

Estaria bien de esa manera colocarlo !!!!!