В вашем коде
//live values of time
var f=h*3600000;//converted to millisecound
var g=m*60000;//converted to millisecound
var i=g+h;//addition of millisecound`
Вы добавили g+h
вместо g+f
, поэтому время срабатывания вашего будильника может быть значительно короче.
var s=d.getSeconds();
document.getElementById("secound").innerHTML=s;
Я не уверен, что это именно то, что вы указали для элемента, я полагаю, вы имели в виду «второй», а не «второстепенный»
В противном случае я не вижу проблем с вашим кодом и должен нормально работать.