<input min="1" style="width: 80px;" id="num" type="number" autofocus autocomplete="off">
<select id="entrada" onchange="calcular()">
<option value="1">Dias</option>
<option value="2">Semanas</option>
<option value="3">Meses</option>
<option value="4">Años</option>
</select>
<span> son equivalentes a <span id="res"></span> </span>
<select id="salida" onchange="calcular()">
<option value="1">Dias</option>
<option value="2">Semanas</option>
<option value="3">Meses</option>
<option value="4">Años</option>
</select>
<script>
// {dias } {semana } {mes } {año }
const ESCALAS = [ 1, 7, 30.4, 365, 7, 1, 4.35, 52.14, 30.42, 4.35, 1, 12, 365, 52.14, 12, 1 ]
//ELEMENTOS
let num = document.getElementById("num");
let entrada = document.getElementById("entrada");
let salida = document.getElementById("salida");
let res = document.getElementById("res");
//FUNCIONES
function calcular(){
let val=num.value, inp=parseInt(entrada.value), out=parseInt(salida.value);
if(val<0||val=="-"){
//CUANDO EL VALOR INGRESADO ES NEGATIVO
num.value=0;
} else if(val==""){
//CUANDO NO HAY VALOR INGRESADO
res.innerHTML="---";
} else if(inp>=out){
res.innerHTML=(val*ESCALAS[inp*out-1]);
} else {
res.innerHTML=(val/ESCALAS[inp*out-1]);
}
}
calcular();
//EVENTOS
//SE DETACTA CUANDO EL USUARIO SULTA UNA TECLA SOBRE EL IMPUT
num.addEventListener("keyup", ()=>{
setTimeout(()=>{calcular();}, 1);
});
//SE DETACTA CUANDO EL USUARIO ALTERA EL VALOR DEL IMPUT HACIENDO USO DE LAS FLECHITAS
num.addEventListener("change", ()=>{
setTimeout(()=>{calcular();}, 1);
});
</script>