简体   繁体   English

创建一个单词而不是数字的百分比预加载器?

[英]Create a percentage preloader with words instead of number?

I am trying to create a percentage preloader that has words instead of numbers.... ie ONE PERCENT, TWO PERCENT, etc. up to ONE HUNDRED PERCENT. 我正在尝试创建一个带有单词而不是数字的百分比预加载器...。例如,百分之一,百分之二等,直到百分之一百。

I know it will move very fast... 我知道它会很快移动...

Not quite sure where to even start? 不太确定从哪里开始? Have googled and tried my hand at a bit, just a push in the right direction is all I'm looking for! 谷歌搜索并尝试了一下,只是想要向正确的方向推!

Thx!!! 谢谢!!!

This is the function I'm going to use to convert a number below 100 to the english version: 这是我要用来将100以下的数字转换为英文版本的功能:

function numberToString(n) {

    var toFifteen = "ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,ELEVEN,TWELVE,THIRTEEN,FOURTEEN,FIFTEEN".split(",");
    var tens = "TEEN,TWENTY,THIRTEE,FOURTY,FIFTY,SIXTY,SEVENTY,EIGHTY,NINETY".split(",");
    if (n == 0)
        return "ZERO";
    if (n <= 15)
        return toFifteen[n - 1];
    if (n < 20)
        return (toFifteen[- -(n+"")[1] - 1] || "") + "TEEN";
    if (n == 100)
        return "ONE HUNDRED";
     return tens[- -(n+"")[0] - 1] + " " + (toFifteen[- -(n+"")[1] - 1] || "");
}

I provide 2 approach, the first works if you only want one or you use arrays, the second works if you want multiple ones and you want to manage them easily. 我提供了两种方法,第一种方法只需要一个数组或使用数组,第二种方法需要多个数组并且希望轻松管理它们。

First approach: 第一种方法:

 // Create progress bar element var progress = document.createElement("span"); var currProgress = 0; progress.innerHTML = numberToString(currProgress) // You should put the el document.body.appendChild(progress); // This following part updates the progress bar, change this // to whatever way you want it to get updated setInterval(function() { currProgress++; if (currProgress > 100) currProgress = 0; progress.innerHTML = numberToString(currProgress); }, 100); function numberToString(n) { var toFifteen = "ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,ELEVEN,TWELVE,THIRTEEN,FOURTEEN,FIFTEEN".split(","); var tens = "TEEN,TWENTY,THIRTEE,FOURTY,FIFTY,SIXTY,SEVENTY,EIGHTY,NINETY".split(","); if (n == 0) return "ZERO"; if (n <= 15) return toFifteen[n - 1]; if (n < 20) return (toFifteen[- -(n+"")[1] - 1] || "") + "TEEN"; if (n == 100) return "ONE HUNDRED"; return tens[- -(n+"")[0] - 1] + " " + (toFifteen[- -(n+"")[1] - 1] || ""); } 

This allows you to have 1 progress bar on the page, but I'd recommend using a more object oriented solution: 这样一来,您就可以在页面上拥有1个进度条,但是我建议您使用一种更加面向对象的解决方案:

 function ProgressBar(startingProgress) { // This makes the argument optional // If the user doesn't enter a number, then it will // default to 0 if (!startingProgress) startingProgress = 0; this.progress = 0; this.element = document.createElement("span"); this.element.innerHTML = ProgressBar.numberToString(this.progress); } ProgressBar.prototype.step = function(amount) { // Same as with startingProgress if (!amount) amount = 1; this.progress += amount; this.element.innerHTML = ProgressBar.numberToString(this.progress); } // "Static" method ProgressBar.numberToString = function(n) { var toFifteen = "ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,ELEVEN,TWELVE,THIRTEEN,FOURTEEN,FIFTEEN".split(","); var tens = "TEEN,TWENTY,THIRTEE,FOURTY,FIFTY,SIXTY,SEVENTY,EIGHTY,NINETY".split(","); if (n == 0) return "ZERO"; if (n <= 15) return toFifteen[n - 1]; if (n < 20) return (toFifteen[- -(n+"")[1] - 1] || "") + "TEEN"; if (n == 100) return "ONE HUNDRED"; return tens[- -(n+"")[0] - 1] + " " + (toFifteen[- -(n+"")[1] - 1] || ""); } var progress = new ProgressBar(); document.body.appendChild(progress.element); setInterval(function() { progress.step(1); }, 100); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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