javascript - Extendscript Javascript 计算结果错误

标签 javascript adobe-indesign extendscript

我正在编写 InDesign 脚本并使用 moments.js 计算日期。

当我使用日期格式“Do”时,它应该返回例如“1st, 2nd, 3rd, 4th...”,但是函数执行的计算返回了错误的结果,结果是这样的:

第一名 第二名 第三名 第四名 5日 6日 7日 8号 9号 10号 11号 12号 13号 14日 15日 16日 17日 18日 19日 20日 21日 22日 23日 24日 25日 26日 27日 28日 29日 30号 31日

这是函数:

function returnOrdinal(number) {
  var b = number % 10,
  output = (parseInt(number % 100 / 10) === 1) ? 'th' :
   (b === 1) ? 'st' :
   (b === 2) ? 'nd' :
   (b === 3) ? 'rd' : 'th';
  return number + output;
}

我创建了一个 JSFiddle它使用相同的函数并返回正确的结果。

那么这是 Extendscript 中的一个已知问题吗?你知道任何其他返回序数的方法吗?任何解决方法?

提前致谢

最佳答案

看起来 ExtendScript 不支持链式三元运算符。据我所知,它是 ECMA 3。InDesign 中的另一个选项 - 只需使用 if else 或 switch

function returnOrdinal(number) {
    var b = number % 10;
    var output;
    if (parseInt(number % 100 / 10) === 1) {
        output = 'th';
    } else {
        switch (number) {
            case 1:
                output = 'st';
                break;
            case 2:
                output = 'nd';
                break;
            case 3:
                output = 'rd';
                break;
            default:
                output = 'th';
        }
    }
    return number + output;
}

关于javascript - Extendscript Javascript 计算结果错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39214578/

相关文章:

javascript - Asp.Net MVC 3 formcollection在提交后丢失数据

javascript - 在 JS、JQ 或 Angular 中打印远程页面

javascript - : if((typeof OA ! = 'undefined' ) && OA ) 和 if(OA) 之间的区别

javascript - 当窗口不可见时选择/剪切/粘贴

xml - 将文本放置在矩形内

javascript - 如何检查运行脚本的 illustrator 版本,以及基于该版本的分支脚本?

javascript - 数组在遍历它时表现得很奇怪

php - 自定义 AJAX 服务器

html - 将 Html 导入 Adob​​e Indesign

adobe - 获取 ExtendScript 中错误的堆栈跟踪