Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/04/2013, 18:37
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: getElementsByClassName() en IE8

función auxiliar en js puro para detección de clases en IE<9

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <html lang="es-ar">
  3. <meta charset="utf-8" />
  4. <title>Html5</title>
  5.  
  6. <script type="text/javascript">
  7. //<![CDATA[
  8.  
  9. //versiones IE < 9
  10. /*  Descomentar este bloque para probar la funcion que_clases() en spam "verifica"
  11. window.onload=function(){
  12. if (document.getElementsByClassName == undefined) {
  13.     document.getElementsByClassName = function(className){
  14.         var tieneClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
  15.         var todosLosElementos = document.getElementsByTagName("*");
  16.         var resultados = [];
  17.         var elementos;
  18.         for (var i = 0; (elementos = todosLosElementos[i]) != null; i++) {
  19.             var elementoClase = elementos.className;
  20.             if (elementoClase && elementoClase.indexOf(className) != -1 && tieneClassName.test(elementoClase))
  21.                 resultados.push(elementos);
  22.         }
  23.         return resultados;
  24.     }
  25. }
  26. }
  27. */
  28.  
  29. // variante, ver si un elemento tiene una clase específica
  30. function tieneClase(ele,cls) {
  31.  return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
  32. }
  33.  
  34.  
  35. function tc(e,c){
  36. if(tieneClase(e,c)){
  37. alert('Este elemento tiene clase ' + c);
  38. }else{
  39. alert('Este elemento no tiene clase ' + c);
  40. }
  41. }
  42.  
  43.  
  44. function que_clases(){
  45. var a = document.getElementsByClassName('a');
  46. var b = document.getElementsByClassName('b');
  47. var c = document.getElementsByClassName('c');
  48. var ac = document.getElementsByClassName('a c');
  49. var ca = document.getElementsByClassName('c a');
  50. alert('texto de primer elemento con clase a = ' + a[0].innerHTML);
  51. alert('texto de primer elemento con clase b = ' + b[0].innerHTML);
  52. alert('texto de segundo elemento con clase c = ' +c[1].innerHTML);
  53. alert('texto de primer elemento con clase a c = ' +ac[0].innerHTML);
  54. alert('texto de tercer elemento con clase c a = ' +ca[2].innerHTML);
  55. }
  56. //]]>
  57. </head>
  58. <div>
  59. <span style="cursor: pointer;" onclick="que_clases();"><b>Verificar</b></span>
  60. <p class="a b c">texto</p>
  61. <p class="a c">texto 2</p>
  62. <p class="a b">texto 3</p>
  63. <p class="a comentario" onclick="tc(this,'comentario')">texto 4</p>
  64. <p class="c a">texto 5</p>
  65. </div>
  66. <div>
  67. <pre>
  68.  
  69. &lt;p class=&quot;a b c&quot;&gt;texto&lt;/p&gt;
  70. &lt;p class=&quot;a c&quot;&gt;texto 2&lt;/p&gt;
  71. &lt;p class=&quot;a b&quot;&gt;texto 3&lt;/p&gt;
  72. </pre>
  73. </div>
  74. </body>
  75. </html>

Edito:
Por las dudas, ya que recibí varios comentarios al respecto, el sentido del código de ejemplo es probarlo en IE8 (si tienen IE9 F12 y cambiar a modo IE8)


SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Última edición por emprear; 05/04/2013 a las 05:46