Foros del Web » Programando para Internet » Javascript »

Incompatbilidad Firefox TypeError: tbl.rows is not a function

Estas en el tema de Incompatbilidad Firefox TypeError: tbl.rows is not a function en el foro de Javascript en Foros del Web. Hola: Tengo el siguiente código que me anda en IE y Chrome pero no en Firefox. Es manejo de tablas con javascript, y esta función ...
  #1 (permalink)  
Antiguo 13/05/2010, 17:38
 
Fecha de Ingreso: enero-2003
Mensajes: 120
Antigüedad: 21 años, 10 meses
Puntos: 0
Pregunta Incompatbilidad Firefox TypeError: tbl.rows is not a function

Hola:

Tengo el siguiente código que me anda en IE y Chrome pero no en Firefox.
Es manejo de tablas con javascript, y esta función sirve para agregar filas al final de la tabla.

Qué puede ser? Existirá alguna instrucción alternativa compatible?

Código:
var rows_limit = 0; // Set to 0 to disable limitation

function addRow(table_id, id)
{
var initial_count = new Array();
var rows_limit = 0; // Set to 0 to disable limitation
var indice= document.formul.Practica.selectedIndex;
var valor = '<div align="center">'+document.formul.Practica.options[indice].value+"</div>";
var texto = document.formul.Practica.options[indice].text;
var canti = '<div align="center">'+document.formul.cantidad.value+"</div>";
var indice= document.formul.Paciente.selectedIndex;
var paciente = document.formul.Paciente.options[indice].value;
var indice= document.formul.Medico.selectedIndex;
var medico = document.formul.Medico.options[indice].value;
var indice= document.formul.obrasocial.selectedIndex;
var osocial = document.formul.obrasocial.options[indice].value;
var chafe    = document.formul.fecha.value;
var tbl       = document.getElementById(table_id);
AQUI SUPUESTAMENTE SE PRODUCE EL PROBLEMA
-------------------------------------------------------------------
var rows_count = tbl.rows.length;
--------------------------------------------------------------------
if (initial_count[table_id] == undefined)
{
    // if it is first adding in this table setting initial rows count
    initial_count[table_id] = rows_count;
}
// determining real count of added fields

var tFielsNum = rows_count - initial_count[table_id];
if (rows_limit!=0 && tFielsNum >= rows_limit) return false;
//var input = '<input type="text" name="postvar[]" style="width:100%;"/>'; removeRow('mytable',this.parentNode.parentNode,<? echo $row2["Id"]; ?>)
 var remove= '<input type="button" value="Borrar" onclick="removeRow(\'mytable\',this.parentNode.parentNode,'+id+');" />';
//alert(remove);
try {
    var newRow = tbl.insertRow(rows_count);
    tbl.rows(rows_count).style.backgroundColor = "#FFCC66";
    var newCell = newRow.insertCell(0);
    newCell.innerHTML = valor;
    var newCell = newRow.insertCell(1);
    newCell.innerHTML = texto;
    var newCell = newRow.insertCell(2);
    newCell.innerHTML = canti;
    var newCell = newRow.insertCell(3);
    newCell.innerHTML = "&nbsp;";
    var newCell = newRow.insertCell(4);
    newCell.innerHTML = remove;
} catch (ex) {
    //if exception occurs
    alert(ex);
}
}
No me dice el renglón donde da el error pero la primera coincidencia de la parte descripta es la línea:

var rows_count = tbl.rows.length;

"TypeError: tbl.rows is not a function"

Ayuda por favor. Gracias.
__________________
Sergio.
  #2 (permalink)  
Antiguo 13/05/2010, 18:41
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Incompatbilidad Firefox TypeError: tbl.rows is not a function

te comento que a mi nunca me ha fallado rows en ningun navegador. el error que estas indicando y la posicion donde aparenta fallar no coinciden. fijate que te esta indicano que tbl.rows no es una funcion, por lo que en algun lugar de tu codigo lo estas usando como una funcion. eventualmente veo que tienes esta linea tbl.rows(rows_count).style.backgroundColor = "#FFCC66"; mi consejo, muestranos un ejemplo mas completo donde podamos reproducir el error porque tu script tal como lo muestra nos deja en el limbo.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 13/05/2010, 19:49
 
Fecha de Ingreso: enero-2003
Mensajes: 120
Antigüedad: 21 años, 10 meses
Puntos: 0
Respuesta: Incompatbilidad Firefox TypeError: tbl.rows is not a function

Bueno si, comenté ese renglón y el script funcionó, qué tiene mal ese renglón que firefox no lo interpreta?

tbl.rows(rows_count).style.backgroundColor = "#FFCC66";

Supuestamente rows_count es la fila que se agregará y se le asigna el color de fondo.
Existe otra instrucción similare que me puedas pasar para hacer compatible con firefox?
para cambiarle el color al fondo de la fila, y me interesaría también poder ajustarle el align al TD.

Muchas Gracias por responder.
__________________
Sergio.
  #4 (permalink)  
Antiguo 13/05/2010, 19:59
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Incompatbilidad Firefox TypeError: tbl.rows is not a function

otra funcion podria ser appendChild para agregar una nueva fila. pero con insertRow debe funcionarte. no obstante, estas obviando el detalle que te mencione el cual es la razon del problema. rows no es una funcion. rows es NodeList que contiene todas las filas en forma de indice de una tabla, parecido a un array. al usar un par de parentesis se entiende que rows es una funcion, contrario a si usaras un par de corchetes.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 13/05/2010, 20:00
 
Fecha de Ingreso: enero-2003
Mensajes: 120
Antigüedad: 21 años, 10 meses
Puntos: 0
Respuesta: Incompatbilidad Firefox TypeError: tbl.rows is not a function

Si, eran los parentesis, iban corchetes, perdón la molestia y muchas gracias compañeros.

Saludos.
__________________
Sergio.

Etiquetas: firefox, function
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 18:37.