Foros del Web » Programando para Internet » Javascript »

Mostrar/ocultar filas en tablas, problema en FF

Estas en el tema de Mostrar/ocultar filas en tablas, problema en FF en el foro de Javascript en Foros del Web. Hola. Necesito una ayuda vuestra para un principiante como yo. Estoy haciendo una aplicacion donde un select me mostraria ciertas filas de una tabla. Lo ...
  #1 (permalink)  
Antiguo 19/10/2007, 11:36
 
Fecha de Ingreso: octubre-2007
Mensajes: 17
Antigüedad: 17 años, 1 mes
Puntos: 0
Mostrar/ocultar filas en tablas, problema en FF

Hola.

Necesito una ayuda vuestra para un principiante como yo. Estoy haciendo una aplicacion donde un select me mostraria ciertas filas de una tabla. Lo he logrado hacer con IE pero con FF no, uso para ello la propiedad display:'' para IE y display:'table-row' para FF y mostrar las filas (FF no lo hace) y para ocultarlas display:'none' en ambos. Aquí os dejo el código por si os sirve.

En el html utilizo php también

Código:
<td class="td"><select name="sel" onChange="visible(this.value);" id="sel" class="textbox_nombre">
          <option value="0" selected>1</option>
          <?php for ($n=1;$n<7;$n++){ ?>
          			<option value="<?php echo $n; ?>"><?php echo $n+1; ?></option>
          			<?php } ?>
        </select></td>
más código

Código:
<div align="center" id="cajas">
<table id="tc" class="title1"><script language="javascript">creaTabla();</script>
</table>
</div>
y las funciones javascript

Código:
function creaTabla(){
var texto = new Array();
texto[0] = "primer";
texto[1] = "segundo";
texto[2] = "tercer";
texto[3] = "cuarto";
texto[4] = "quinto";
texto[5] = "sexto";
texto[6] = "séptimo";
texto[7] = "Fecha:";
texto[8] = "Fecha:";

for (i = 0; i <= 6; i++){
	document.write("<tr id='caja"+ i );
	if (i == 0){
		document.write("' style='display:'>");  <!--siempre mostrar la primera fila-->
	}
	else document.write("' style='display:none'>");
	document.write("<td style='background-color:#B0C4DE'>"+ texto[7] + texto[i] +"</td><td  style='background-color:#B0C4DE'><input type='text' name='fd"+ i +"' id='fd"+ i +"' autocomplete='off' onFocus='setupcalendars(this, catcalc"+i+");' /></td><td style='background-color:#B0C4DE'>"+ texto[8] + texto[i] +"</td><td style='background-color:#B0C4DE'><input type='text' name='fcd"+ i +"' id='fcd"+ i +"' autocomplete='off' onFocus='setupcalendars(this, catcalc"+i+");' /></td></tr>");
	}
}

function visible(sel){
var ca = new Array();
ca[1] =document.getElementById("caja1");
ca[2] =document.getElementById("caja2");
ca[3] =document.getElementById("caja3");
ca[4] =document.getElementById("caja4");
ca[5] =document.getElementById("caja5");
ca[6] =document.getElementById("caja6");
	for (i = 1; i <= 6; i++){
		if (i <= sel){
			if (navigator.appName == "Microsoft Internet Explorer"){
				ca[i].style.display="";}
			else ca[i].style.display="table-row;";
	}
	else ca[i].style.display="none";
	}
}
Utilicé estas otras funciones pero a la hora de pasar los valores de los inputs fd0..fd6 y fcd0..6, en FF no me los muestra tampoco, sí en IE. Estas son las funciones

Código:
function creaTabla(s){
var texto = new Array();
texto[0] = "primer";
texto[1] = "segundo";
texto[2] = "tercer";
texto[3] = "cuarto";
texto[4] = "quinto";
texto[5] = "sexto";
texto[6] = "septimo";
texto[7] = "Fecha:";
texto[8] = "Fecha:";

var table = document.getElementById('tc');
for (j=0;j<=s;j++){
	var row = table.insertRow(-1);
	row.setAttribute("id", "caja"+j);
	
	var cell = row.insertCell(-1);
	cell.setAttribute("bgColor", "#B0C4DE");
	cell.innerHTML = texto[7]+texto[j];
	
	cell = row.insertCell(-1);
	cell.setAttribute("bgColor", "#B0C4DE");
	cell.innerHTML = '<input type="text" name="fd'+j+'" id="fd'+j+'" onFocus="setupcalendars(this, catcalc'+j+');">';
	
	cell = row.insertCell(-1);
	cell.setAttribute("bgColor", "#B0C4DE");
	cell.innerHTML = texto[8]+texto[j];
	
	cell = row.insertCell(-1);
	cell.setAttribute("bgColor", "#B0C4DE");
	cell.innerHTML = '<input type="text" name="fcd'+j+'" id="fcd'+j+'" onFocus="setupcalendars(this, catcalc'+j+');">';
  
}
}

function visible(valor){
var rws = document.getElementById("tc").rows;
len = rws.length;
for (i=0;i<len;i++){
		document.getElementById("tc").deleteRow(-1);
	}
creaTabla(valor);
}

Gracias por vuestras respuestas.
  #2 (permalink)  
Antiguo 22/10/2007, 04:19
 
Fecha de Ingreso: octubre-2007
Mensajes: 17
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: Mostrar/ocultar filas en tablas, problema en FF

Bueno, pues creo haber dado con el problema. Resulta que cargo también otro archivo .js, llamado prototype.js, y si elimino la línea que llama a ese archivo con sus funciones, esto es:

Código HTML:
<script type="text/javascript" src="/components/com_calgye/js/prototype.js"></script> 
el problema que explicaba en el post anterior se resuelve. Lo malo es que necesito cargar prototype ¿Alguna idea?
  #3 (permalink)  
Antiguo 22/10/2007, 11:52
 
Fecha de Ingreso: octubre-2007
Mensajes: 17
Antigüedad: 17 años, 1 mes
Puntos: 0
De acuerdo Re: Mostrar/ocultar filas en tablas, problema en FF

Finalmente encontré el fallo. Habia conflicto en el nombre de mi función visible(sel) con uno de los métodos de prototype

Código HTML:
Element.Methods = {
  visible: function(element) {
    return $(element).style.display != 'none';
  },
asi que cambié el nombre de mi función y ya funciona.

Asi que tema auto-solucionado.
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 04:30.