秒数转换波斯数字

时间:2012-08-30 15:00:05

标签: javascript jquery

我希望将波斯数字转换为秒数(倒数20到0),我试试,但我没有成功,以下是我的完整代码。我该怎么办?

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

HTML:

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

Jquery的:

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);​

3 个答案:

答案 0 :(得分:1)

在您的HTML文件中 <div id="#Seconds" style="font-size: 40px;">不正确。该ID应为Seconds,不包含##前缀是告诉Jquery Seconds是id的方式,而不是类(使用.前缀)或标记类型(无前缀)。但它不是身份本身的一部分。

答案 1 :(得分: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/

答案 2 :(得分: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')    
} 

FIDDLE