[ Foro de Javascript ]

Color de fondo en celda

29-Mar-2019 00:37
Carlos Vildoso
1 Respuestas

Hola, tengo un javascript que extrae unos datos desde un script externo y los presenta en una tabla 3x3.

Dentro de ese script, hay un cálculo que utiliza algunos datos extraídos y funciona bastante bien, pero para visualizar uno de esos datos, se hace un calculo y posteriormente una comparación de ese valor y si corresponde a un rango o no.

Si el valor calculado está dentro del rango; se le asigna un color y ese código de color se asigna a una variable que se debe convertir en el color de fondo (bgcolor) de una de las celdas de esa tabla.

Lo curioso es que cambia el fondo de la celda, pero de un color que no corresponde a los rangos, dando la idea que el ciclo if, no funciona adecuadamente.

No se que puede estar sucediendo, así es que si alguien me puede ayudar a solucionar el problema y que el script funcione adecuadamente para lo que necesito, se lo agradecería.

Les dejo el código HTML y el javascript en cuestión. Saludos

HTML
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Indice de Calor</title>
<script language="javascript" src="http://archivos.meteochile.gob.cl/portaldmc/meteochile/scripts/condicionactualmetar.js?">
var est_cons = '';
</script>
</head>

<body>
<table width="250" border="0" cellspacing="1" cellpadding="0">
<tbody><script language="javascript">est_cons = 'SCVD';</script>
   <tr><script language="javascript" src="js/condicion_met.js"></script>
     <td colspan="3"><script language="javascript" type="text/javascript">document.write(nomb_ciu);</script></td>
   </tr>
   <tr>
     <td width="83" align="center" valign="middle">Temp.</td>
     <td width="83" align="center" valign="middle">H.R.</td>
     <td width="83" align="center" valign="middle">I. Calor</td>
   </tr>
   <tr>
 <td align="center" valign="middle"><script language="javascript">document.write(temp + " °C");</script></td>
     <td align="center" valign="middle"><script language="javascript">document.write(hrel + " %");</script></td>
     <td align="center" valign="middle" bgcolor=cfondo alt=texto title=texto><script language="javascript">document.write(C_Ind);</script></td>
   </tr>
 </tbody>
</table>
</body>
</html>

Javascript
// JavaScript Document
// Extrae informacion Meteorologica de Estación
var obmetar = CondicionActualMetar[est_cons].split("|");
var estac = new Array();
var horahet= new Array();
var dddvto = new Array();
var fffvto = new Array();
var visib = new Array();
var vis1 = new Array();
var fenom = new Array();
var temp = new Array();
var cielo = new Array();
var tcono = new Array();
var hrel = new Array();
var condic = new Array();
var ciudad = new Array();
var sig = new Array();
var icon_f = new Array();
var ico1 = new Array();
var actualiza = CondicionActualMetar_actualizado;
estac = obmetar[0];
hramet = obmetar[1];
dddvto = obmetar[2];
dvto = Number(obmetar[2]);
fffvto = obmetar[3];
fvto = Number(obmetar[3]);
visib = obmetar[4];
fenom = obmetar[5];
temp = obmetar[6];
stem = parseInt(obmetar[6]);
cielo = obmetar[7];
icono = obmetar[8];
icon_f = obmetar[8].split(".");
ico1 = icon_f[0];
hrel = obmetar[9];
condic = obmetar[10];
// Busca la Estación consultada y define nombre
if (estac == "SCAP") {nomb_ciu = "Alto Palena";}
if (estac == "SCAR") {nomb_ciu = "Arica";}
if (estac == "SCAS") {nomb_ciu = "Puerto Aysén";}
if (estac == "SCAT") {nomb_ciu = "Copiapó";}
if (estac == "SCBA") {nomb_ciu = "Balmaceda";}
if (estac == "SCCC") {nomb_ciu = "Chile Chico";}
if (estac == "SCCF") {nomb_ciu = "Calama";}
if (estac == "SCCH") {nomb_ciu = "Chillán";}
if (estac == "SCCI") {nomb_ciu = "Punta Arenas";}
if (estac == "SCCY") {nomb_ciu = "Coyhaique";}
if (estac == "SCDA") {nomb_ciu = "Iquique";}
if (estac == "SCEL") {nomb_ciu = "Santiago - Aeropuerto";}
if (estac == "SCTB") {nomb_ciu = "Santiago - Centro";}
if (estac == "SCFA") {nomb_ciu = "Antofagasta";}
if (estac == "SCFM") {nomb_ciu = "Porvenir";}
if (estac == "SCFT") {nomb_ciu = "Futaleufú";}
if (estac == "SCGE") {nomb_ciu = "Los Angeles";}
if (estac == "SCGZ") {nomb_ciu = "Puerto Williams";}
if (estac == "SCHR") {nomb_ciu = "Cochrane";}
if (estac == "SCIC") {nomb_ciu = "Curicó";}
if (estac == "SCIE") {nomb_ciu = "Concepción";}
if (estac == "SCIP") {nomb_ciu = "Isla de Pascua";}
if (estac == "SCBA") {nomb_ciu = "Balmaceda";}
if (estac == "SCIR") {nomb_ciu = "Juan Fernández";}
if (estac == "SCJO") {nomb_ciu = "Osorno";}
if (estac == "SCMK") {nomb_ciu = "Melinka";}
if (estac == "SCNT") {nomb_ciu = "Puerto Natales";}
if (estac == "SCON") {nomb_ciu = "Quellón";}
if (estac == "SCRD") {nomb_ciu = "Rodelillo";}
if (estac == "SCRG") {nomb_ciu = "Rancagua";}
if (estac == "SCRM") {nomb_ciu = "Antártica";}
if (estac == "SCSE") {nomb_ciu = "La Serena/Coquimbo";}
if (estac == "SCSN") {nomb_ciu = "San Antonio/Cartagena";}
/*if (estac == "SCTE") {nomb_ciu = "Puerto Varas";}*/
if (estac == "SCTE") {nomb_ciu = "Puerto Montt";}
if (estac == "SCVD") {nomb_ciu = "Valdivia";}
if (estac == "SCVM") {nomb_ciu = "Viña del Mar/Valparaíso";}
if (estac == "SCQN") {nomb_ciu = "Santiago Centro";}
if (estac == "SCQP") {nomb_ciu = "Temuco";}
// Cálculo Indice de Calor
var stem = parseFloat(temp);
var relhn = parseFloat(hrel);
TF = 1.80 * stem + 32.0;
unidad = " °C";
HIndex = -42.379 + 2.04901523 * TF + 10.14333127 * relhn - 0.22475541 * TF * relhn - 6.83783 * (Math.pow(10, -3)) * (Math.pow(TF, 2)) - 5.481717 * (Math.pow(10, -2)) * (Math.pow(relhn, 2)) + 1.22874 * (Math.pow(10, -3)) * (Math.pow(TF, 2)) * relhn + 8.5282 * (Math.pow(10, -4)) * TF * (Math.pow(relhn, 2)) - 1.99 * (Math.pow(10, -6)) * (Math.pow(TF, 2)) * (Math.pow(relhn,2));
C_Ind = Math.round((HIndex - 32) * .556);
//
// Valida rangos de Indice de Calor
if (C_Ind < 27){C_Ind = 'n/c'; cfondo = '#00FF00'; texto = 'Aceptable';}
if (C_Ind >= 27 || C_Ind <= 32){cfondo = '#ECF410'; texto = 'Caluroso';}
if (C_Ind >= 33 || C_Ind <= 40){cfondo = '#F4AA0B'; texto = 'Precaución';}
if (C_Ind >= 41 || C_Ind <= 54){cfondo = '#F14515'; texto = 'Peligro';}
if (C_Ind > 54){cfondo = '#FF0000'; texto = 'Calor Extremo';}


16-Apr-2019 14:15
Nacho Cabanes (+41)

Donde haces

<td align="center" valign="middle" bgcolor=cfondo alt=texto title=texto><script language="javascript">document.write(C_Ind);</script></td>

Deberías fijar el color de fondo también desde JavaScript:

<td align="center" valign="middle" bgcolor=<script>document.write(cfondo);</script> alt=texto title=texto><script language="javascript">document.write(C_Ind);</script></td>
 






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)