繁体   English   中英

使用Javascript的奇异VS多个单词?

[英]Singular VS Plural Words with Javascript?

这是我用于Javascript倒计时器的代码:

<script type="text/javascript">
function ShowTimes1() {
    var now = new Date();
    if (now.getHours() < 6) {
        newVar = 5
    } else if (now.getHours() < 12) {
        newVar = 11
    } else if (now.getHours() < 18) {
        newVar = 17
    } else {
        newVar = 23
    }
    var hrs = newVar - now.getHours();
    var mins = 59 - now.getMinutes();
    var secs = 59 - now.getSeconds();
    var str = '';
    str += '<b><a href="discount.php" style="text-decoration:none;cursor:default;"><span style="color:#FF9600;">Limited Time Offer!</span> <span style="color:#489FDC;">' + hrs + ' Hours ' + mins + ' Minutes ' + secs + ' Seconds</span></a></b>';
    document.getElementById('countdownToMidnight').innerHTML = str
}
var _cntDown;

function StopTimes() {
    clearInterval(_cntDown)
}
</script>

除了一件事,它几乎完美地工作。 当只有1时,它总是显示“小时”,“分钟”和“秒”而不是单数版本。例如,我希望它显示“1秒”而不是“1秒”。

这是处理显示该文本的代码的特定部分:

'+hrs+' Hours '+mins+' Minutes '+secs+' Seconds

有没有简单的方法来修复我的代码来实现这一目标?

使用Ternary operator来简化您的工作。

尝试,

'+ hrs +' Hour' + ((hrs>1)?'s':'') +mins+' Minute' + ((mins>1)?'s':'') +secs+' Second' + ((secs>1)?'s':'')

全行代码:

str += '<b><a href="discount.php" style="text-decoration:none;cursor:default;"><span style="color:#FF9600;">Limited Time Offer!</span> <span style="color:#489FDC;">'+ hrs +' Hour' + ((hrs>1)?'s':'') +mins+' Minute' + ((mins>1)?'s':'') +secs+' Second' + ((secs>1)?'s':'')+ ' Seconds</span></a></b>';

'+ hrs +'Hours'+ mins +'Minutes'+ secs +'Seconds to be

// ...
' + hrs + ' Hour' + (1===hrs) ? ' ' : 's ' 
 + mins + ' Minute' + (1===mins) ? ' ' : 's ' 
 + secs + ' Second' +  (1===secs) ? ' ' : 's' 
// ...

在这种微不足道的情况下使用三元运算符是很好的。 但是,它不适用于多种语言,翻译您的应用程序非常困难。

为了解决这些用例,我实现了一个小型库,可以用来复制JavaScript中的单词。 它透明地将CLDR数据库用于多个语言环境,因此它几乎支持您要使用的任何语言。 它的API非常简约,集成非常简单。 我打电话给它 - 无数

这是一篇关于它的小文章:« 如何使用JavaScript复数不同语言的任何单词? »。

随意在您的项目中使用它。 我也很乐意收到你的反馈意见!

暂无
暂无

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

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