2

我想要转换波斯数字的秒数(倒计时 20 到 0),我尝试了,但我没有成功,下面是我的完整代码。我该怎么办?

演示:http: //jsfiddle.net/JBzv7/

HTML:

<div id="#Seconds" style="font-size: 40px;">
20
</div>​

查询:

var rep = {
        '0': '&#1776;',
        '1': '&#1777;',
        '2': '&#1778;',
        '3': '&#1779;',
        '4': '&#1780;',
        '5': '&#1781;',
        '6': '&#1782;',
        '7': '&#1783;',
        '8': '&#1784;',
        '9': '&#1785;',
        ':': ':',
    }

var str = '';
var sec = 20

var timer = setInterval(function() {

    var sss = sec--;
    var arr = sss.split("");                        

    for (i = 0; i < arr.length; i++) {
    str += rep[arr[i]];
    }
    alert(str)
    $('#Seconds').text(str);

   if (sss == -1) {
      alert('ok');
      clearInterval(timer);
    }
},1000);​
4

3 回答 3

1

在您的 HTML 文件中, <div id="#Seconds" style="font-size: 40px;">不正确。id 应该只是Seconds,没有#. #前缀是你告诉 Jquery 那Seconds是 id 的方式,而不是类(你用 前缀).或标签的类型(没有前缀)。但它不是 id 本身的一部分。

于 2012-08-30T15:09:34.167 回答
1
function render(n) {
  var digits = [], r;
  do {
    r = n % 10;
    n = (n - r) / 10;
    digits.unshift(['&#', r + 1776, ';'].join(''));
  } while (n > 0);

  $('#Seconds').html(digits.join(''));
}

(function timer(current) {
  render(current);

  if (current > 0) {
    setTimeout(function () {
      timer(current - 1);
    }, 1000);
  }
}(20)); // the 20 is your countdown length

演示:http: //jsfiddle.net/EHAsW/

于 2012-08-30T15:12:23.203 回答
0

您设置rep对象的方式有利于选择数字,您可以读取变量split的值sec并读取对象的相关属性。请注意,您应该使用html而不是text.

也改变:

<div id="#Seconds" style="font-size: 40px;">
20
</div>​

到:

<div id="Seconds" style="font-size: 40px;">
&#1778;&#1776;
</div>​

var rep = {
        '0': '&#1776;',
        '1': '&#1777;',
        '2': '&#1778;',
        '3': '&#1779;',
        '4': '&#1780;',
        '5': '&#1781;',
        '6': '&#1782;',
        '7': '&#1783;',
        '8': '&#1784;',
        '9': '&#1785;',
        ':': ':',
    }

var str = '';
var sec = 20;

var timer = setInterval(function() {   
    var sss = sec--;
    if (sss == -1) {
      clear();
    }
    if (sss < 10) {sss = "0" + sss.toString()}
    var v = sss.toString().split("");
    str = rep[v[0]].toString() + rep[v[1]].toString();        
    $('#Seconds').html(str);     
},1000);

function clear() {
   clearInterval(timer)
   alert('okay')    
} 

小提琴

于 2012-08-30T15:16:25.637 回答