Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/11/2009, 05:18
RafaRockNRoll
 
Fecha de Ingreso: noviembre-2009
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Problema con javascript, php y un input select en Internet Explorer.

Tengo un problema con una pequeña aplicación que estoy haciendo para una tienda online. Explico la aplicación desde el principio:

Llamo a esta función php desde la página donde quiero mostrar los precios



Código PHP:
function comboAtributos($cod_atrib,$prod)
{
$link getConnection();
    
$sql "SELECT * FROM atributos WHERE cod_atributo = " $cod_atrib;
    
$result mysql_query($sql,$link);        
    while (
$row mysql_fetch_array($result))
    {            
        echo 
"<select id='opcion' name='opcion' >";        
        for (
$i=0$i<=20$i++)
        {
            if (
$row["opcion".$i] != ""
            {
                if (
$row["oferta".$i] != "" && $row["oferta".$i] != "0")
                {
                    
/*echo "<script language='javascript'>window.mostrarPrecio(".$row["var0"].",".$row["oferta0"].",".$prod.");</script>";*/
                    
echo "<option onClick='window.mostrarPrecio(".$row["var".$i].",".$row["oferta".$i].",".$prod.");' value='"$row["oferta".$i].","$row["opcion".$i].","$row["nombre"]."'>" $row["opcion".$i] . " </option>\r\n";    
                } 
                else
                {
                    
/*echo "<script language='javascript'> mostrarPrecio1(".$row["var0"].",".$prod.") </script>";*/
                    
echo "<option onclick='mostrarPrecio1(".$row["var".$i].",".$prod.")' value='"$row["var".$i].","$row["opcion".$i].","$row["nombre"]."'>" $row["opcion".$i] . " </option>\r\n";
                }
            }            
        }            
    }        
    echo 
"</select>";

Esta función termina invocando a otra función “mostrarPrecio(precio,precioOferta,prod)” en javascript, que se encuentra en un archivo “.js”:



Código:
function mostrarPrecio(precio,precioOferta,prod)
{	
if (precioOferta != "" && precioOferta != "0" && precioOferta != "undefined")
	{					
		var valor = precioOferta + "";	
		var textoDiv = "";
		for (var j = 0; j < valor.length; j++)
		{
			if (valor.charAt(j) == '.')
			{
				textoDiv =  textoDiv + "<img src=images/precios/dot.gif />";
			}
			else
			{
				textoDiv =  textoDiv + "<img src=images/precios/grandes/"+ valor.charAt(j) +".gif />";
			}
		}
		textoDiv = textoDiv + "<img src='images/precios/euroPortada.gif' />"	
		contenedorOferta = document.getElementById("contenedorOferta" + prod);
		contenedorOferta.innerHTML = textoDiv;
		var valor = precio + "";	
		var textoDiv = "";
		for (var j = 0; j < valor.length; j++)
		{
			if (valor.charAt(j) == '.')
			{
				textoDiv =  textoDiv + "<img src=images/precios/dot.gif />";
			}
			else
			{
				textoDiv =  textoDiv + "<img src=images/precios/grandes/"+ valor.charAt(j) +"no.gif />";
			}
		}
		textoDiv = textoDiv + "<img src='images/precios/euroPortada.gif' />"			contenedorPrecio = document.getElementById("contenedorPrecio" + prod);
		contenedorPrecio.innerHTML = textoDiv;
	}
}
Como podéis ver, esta función cambia los caracteres de una cadena por imágenes, que finalmente se cargan en los siguientes “div”:
Código HTML:
echo "<div id='contenedorPrecio".$prod."' class='precioFicha'> </div>";
echo "<div id='contenedorOferta".$prod."' class='precioFichaOferta'> </div>";
Todo esto funciona perfectamente en firefox, pero en Explorer parece que el javascript no funciona en absoluto. Se cargan las opciones en el “select” mediante php, pero al hacer click no se ejecuta el javascript, no se muestran los precios.

He probado a utilizar AJAX, concretamente una clase para php llamada XAJAX. Funciona bien en los dos exploradores pero solo con “inputs” distintos de “select”. Este solo funciona para firefox.

Llevo dos semanas dándole vueltas al tema y he decidido escribiros finalmente, porque pienso que alguna solución habrá para adaptar este código que os traigo a el maldito Internet Explorer.

Gracias de antemano y un saludo.
Sois de una ayuda incalculable.