简体   繁体   中英

How to make javascript variable dynamic for timer

okay I have a timer script that counts down and is fed a date in this format:

var year="2015";    

var month="11";      

var day="18"; 

I am trying figure out how to dynamically populate the above variables so that the timer resets every wed at 8pm. So on wed 18, 2015 those variables would dynamically change to:

var year="2015";

var month="11";      

var day="25";

and keep going or would it just be better to have a user input the date in a form to populate those variables with the correct info. I would rather it all be automatic though, if possible of course.

Script that uses the variables:

 /* Count down until any date script- By JavaScript Kit (www.javascriptkit.com) Over 200+ free scripts here! Modified by Robert M. Kuhnhenn, DO on 5/30/2006 to count down to a specific date AND time, on 10/20/2007 to a new format, and 1/10/2010 to include time zone offset. */ var current="Citadel has reset!"; //-->enter what you want the script to display when the target date and time are reached, limit to 20 characters var year="2015"; //-->Enter the count down target date YEAR var month="11"; //-->Enter the count down target date MONTH var day="18"; //-->Enter the count down target date DAY var hour="22"; //-->Enter the count down target date HOUR (24 hour clock) var minute="00"; //-->Enter the count down target date MINUTE var tz=-5; //-->Offset for your timezone in hours from UTC (see http://wwp.greenwichmeantime.com/index.htm to find the timezone offset for your location) // DO NOT CHANGE THE CODE BELOW! var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); function countdown(yr,m,d,hr,min){ theyear=yr;themonth=m;theday=d;thehour=hr;theminute=min; var today=new Date(); var todayy=today.getYear(); if (todayy < 1000) {todayy+=1900;} var todaym=today.getMonth(); var todayd=today.getDate(); var todayh=today.getHours(); var todaymin=today.getMinutes(); var todaysec=today.getSeconds(); var todaystring1=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec; var todaystring=Date.parse(todaystring1)+(tz*1000*60*60); var futurestring1=(montharray[m-1]+" "+d+", "+yr+" "+hr+":"+min); var futurestring=Date.parse(futurestring1)-(today.getTimezoneOffset()*(1000*60)); var dd=futurestring-todaystring; var dday=Math.floor(dd/(60*60*1000*24)*1); var dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1); var dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1); var dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1); if(dday<=0&&dhour<=0&&dmin<=0&&dsec<=0){ document.getElementById('count2').innerHTML=current; document.getElementById('count2').style.display="inline"; document.getElementById('count2').style.width="390px"; document.getElementById('dday').style.display="none"; document.getElementById('dhour').style.display="none"; document.getElementById('dmin').style.display="none"; document.getElementById('dsec').style.display="none"; document.getElementById('days').style.display="none"; document.getElementById('hours').style.display="none"; document.getElementById('minutes').style.display="none"; document.getElementById('seconds').style.display="none"; document.getElementById('spacer1').style.display="none"; document.getElementById('spacer2').style.display="none"; return; }else { document.getElementById('count2').style.display="none"; document.getElementById('dday').innerHTML=dday; document.getElementById('dhour').innerHTML=dhour; document.getElementById('dmin').innerHTML=dmin; document.getElementById('dsec').innerHTML=dsec; setTimeout("countdown(theyear,themonth,theday,thehour,theminute)",1000); } } 

You can use JavaScript's Date object for this.

When your timer is triggered you could do the following:

var date = new Date(year, month, day);

date.setDate(date.getDate() + 7);

year = date.getFullYear().toString();
month = date.getMonth().toString();
day = date.getDate().toString(); //Note: not date.getDay() even though that seems more correct.

You could also just use a Date object in the first place instead of the three separate string variables to avoid creating/parsing/converting between different types.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM