Нужна помощь в выравнивании результата обратного отсчета в JavaScript - PullRequest
2 голосов
/ 31 мая 2011

Я работаю над этим обратным отсчетом: http://apps.facebook.com/tjdcountdown/

Я хотел бы добавить определенную ширину для каждого результата (минуты, часы, дни) моего обратного отсчета, чтобы число всегда идеально совпадало стекст ниже.

Можно ли создать переменную для каждого результата и вызвать их позже в моем HTML-коде?

Вот скрипт для обратного отсчета:

<script type="text/javascript">

var myMonth = "<?= $myMonth ?>";
var myDay = "<?= $myDay ?>";
var myYear = "<?= $myYear ?>";
var myHour = "<?= $myHour ?>";
var myMin = "<?= $myMin ?>";

dateFuture1 = new Date(2013,03,26,14,15,00);

function GetCount(ddate,iid){

    dateNow = new Date();   //grab current date
    amount = ddate.getTime() - dateNow.getTime();   //calc milliseconds between dates
    delete dateNow;

    // if time is already past
    if(amount < 0){
        document.getElementById(iid).innerHTML="I'm now married!";
    }
    // else date is still good
    else{
        years=0;weeks=0;days=0;hours=0;mins=0;secs=0;out="";

        amount = Math.floor(amount/1000);//kill the "milliseconds" so just secs

        years=Math.floor(amount/31536000);//years (no leapyear support)
        amount=amount%31536000;

        weeks=Math.floor(amount/604800);//weeks
        amount=amount%604800;

        days=Math.floor(amount/86400);//days
        amount=amount%86400;

        hours=Math.floor(amount/3600);//hours
        amount=amount%3600;

        mins=Math.floor(amount/60);//minutes
        amount=amount%60;

        secs=Math.floor(amount);//seconds

        out += years +""+((years==1)?"":"")+"";
        out += weeks +""+((weeks==1)?"":"")+"";
        if(days != 0){out += days +""+((days==1)?"":"")+"";}
        if(hours != 0){out += hours +""+((hours==1)?"":"")+"";}
        out += mins +""+((mins==1)?"":"")+"";
        out += secs +""+((secs==1)?"":"")+", ";
        out = out.substr(0,out.length-2);
        document.getElementById(iid).innerHTML=out;
        setTimeout(function(){GetCount(ddate,iid)}, 1000);
    }
}

window.onload=function(){
    GetCount(dateFuture1, 'countbox1');
    //you can add additional countdowns here (just make sure you create dateFuture2 and countbox2 etc for each)
};
</script>

Большое спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 31 мая 2011

Да, вы можете сделать все это. Поместите каждое число в отдельный div и отцентрируйте текст внутри каждого div. Не нужно кодировать, чтобы убедиться, что текст центрирован.

Основная проблема сейчас заключается в том, что все числа (годы, недели, дни, часы и т. Д.) Сжимаются в один div (iid aka 'countbox1'), когда их нужно разделить на свои собственные div.

0 голосов
/ 31 мая 2011

Я бы определил длину числа, а затем использовал бы эту длину, чтобы определить подходящую ширину. Выделение памяти динамически не очень хорошо (по крайней мере, на мой взгляд). Я уверен, что для определения длины есть лучшие JS-способы сделать это, но простым способом будет продолжать деление на 10 до тех пор, пока значение не станет меньше 1 и количество делений не будет разделено.

while(flag){
  i++;
  res = res/10
  if(res<1)
  flag=false;
}

// i would be your length
// should make this into a function prob 
...