Ver Mensaje Individual
  #6 (permalink)  
Antiguo 31/07/2007, 11:33
Avatar de AlZuwaga
AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 9 meses
Puntos: 535
Re: insertBefore no: quiero un insertAfter!

Grande! Quedó así:

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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Manipular una tabla</title>
<script type="text/javascript">
function getElementsByClassName(strClass, strTag, objContElm) {
//Obtenida de: http://muffinresearch.co.uk/archives/2006/04/29/getelementsbyclassname-deluxe-edition/
  strTag = strTag || "*";
  objContElm = objContElm || document;    
  var objColl = objContElm.getElementsByTagName(strTag);
  if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
  var arr = new Array();                              
  var delim = strClass.indexOf('|') != -1  ? '|' : ' ';   
  var arrClass = strClass.split(delim);    
  for (var i = 0, j = objColl.length; i < j; i++) {                         
    var arrObjClass = objColl[i].className.split(' ');   
    if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
    var c = 0;
    comparisonLoop:
    for (var k = 0, l = arrObjClass.length; k < l; k++) {
      for (var m = 0, n = arrClass.length; m < n; m++) {
        if (arrClass[m] == arrObjClass[k]) c++;
        if ((delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
          arr.push(objColl[i]); 
          break comparisonLoop;
        }
      }
    }
  }
  return arr; 
}

function prepara_tabla(){
	var tabla = document.getElementById('mi_tabla');
	var filas = tabla.rows;
	for(i = 0; i < filas.length; i++){
		la_celda = filas[i].cells[filas[i].cells.length - 1];
		la_celda.style.display = 'none';
		if(la_celda.nodeName == 'TD'){
			filas[i].setAttribute('class', 'az_fila_origen');
		}
	}
	crea_copias('az_fila_origen');
}

function crea_copias(laClase){
	var filas = getElementsByClassName(laClase);
	for(i = 0; i < filas.length; i++){
		nuevo_row = document.createElement('tr');
			nuevo_cell = document.createElement('td');
			nuevo_cell.setAttribute('colspan', '4');
				nuevo_cell_texto = document.createTextNode(filas[i].cells[filas[i].cells.length - 1].textContent);
			nuevo_cell.appendChild(nuevo_cell_texto);
		nuevo_row.appendChild(nuevo_cell);
		// comienza código de caricatos para emular un insertAfter \\
		if(filas[i].parentNode.lastChild == filas[i]){
			filas[i].parentNode.appendChild(nuevo_row);
		}
		else{
			filas[i].parentNode.insertBefore(nuevo_row, filas[i].nextSibling);
		}
		// finaliza código de caricatos para emular un insertAfter \\
	}
}

window.onload = prepara_tabla;
</script>
</head>

<body>
<h1>Manipular una tabla</h1>
<table border="1" cellspacing="0" cellpadding="5" id="mi_tabla">
  <tr>
    <th scope="col">Enc 1</th>
    <th scope="col">Enc 2</th>
    <th scope="col">Enc 3</th>
    <th scope="col">Enc 4</th>
    <th scope="col">Enc 5</th>
  </tr>
  <tr>
    <td>Dato 1.1</td>
    <td>Dato 1.2</td>
    <td>Dato 1.3</td>
    <td>Dato 1.4</td>
    <td>Descripci&oacute;n del dato 1</td>
  </tr>
  <tr>
    <td>Dato 2.1</td>
    <td>Dato 2.2</td>
    <td>Dato 2.3</td>
    <td>Dato 2.4</td>
    <td>Descripci&oacute;n del dato 2</td>
  </tr>
</table>
</body>
</html>
Lo que todavía no entiendo es por qué no funciona en IE6... ¿usé algún código que IE no interprete? ¿Alguien me ayuda a encontrarlo?

Saludos