首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找多个位置之一的JavaScript处理程序

查找多个位置之一的JavaScript处理程序
EN

Code Review用户
提问于 2022-07-26 21:35:23
回答 1查看 57关注 0票数 -1

如何简化以下功能以减少重复代码?我想将"arg“定义为数组,因为这是每种情况唯一不断变化的方面。

代码语言:javascript
复制
  function jumpMovement(iMovement) {

        switch (iMovement) {
            case 0:
                document.getElementById('opus-08a').contentWindow.postMessage('{"method": "seekSeconds", "arg":"0.0"}', 'https://musescore.com');
                break;
            case 1:
                document.getElementById('opus-08a').contentWindow.postMessage('{"method": "seekSeconds", "arg":"99.45"}', 'https://musescore.com');
                break;
            case 2:
                document.getElementById('opus-08a').contentWindow.postMessage('{"method": "seekSeconds", "arg":"201.45"}', 'https://musescore.com');
                break;
            case 3:
                document.getElementById('opus-08a').contentWindow.postMessage('{"method": "seekSeconds", "arg":"319.49"}', 'https://musescore.com');
                break;
            default:
                document.getElementById('opus-08a').contentWindow.postMessage('{"method": "seekSeconds", "arg":"0.0"}', 'https://musescore.com');
        }
    }

在html中使用的示例:

代码语言:javascript
复制
 <button onclick="jumpFigure(0)">0</button>  
 <button onclick="jumpFigure(1)">1</button>  
 <button onclick="jumpFigure(2)">2</button>  

等等。

EN

回答 1

Code Review用户

回答已采纳

发布于 2022-07-28 11:20:55

您可以完全删除开关(假设iMovement可以用作索引)。

如果iMovement的值传播范围要大得多,那么您可以使用一个开关并相应地设置arg,然后在最后进行DOM调用。

代码语言:javascript
复制
function jumpMovement(iMovement) {
    const args = [ 0.0, 99.45, 201.45, 319.49 ]
    const arg = args[iMovement] ?? 0.0

    document.getElementById('opus-08a').contentWindow.postMessage(`{"method": "seekSeconds", "arg":"${arg.toFixed(2)}"}`, 'https://musescore.com');
}
票数 0
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/278369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档