31/07/2007, 11:33
|
| 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ó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ó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 |