javascript - 从 javascript 文字设置选定选项的巧妙方法

标签 javascript literals html-templates

我正在尝试使用 Javascript 文字设置所选选项。

function getHtmlFromTask(task) {
    let markup =        
    `<select class="custom-select d-block" id="stack" value="${task.stack}" required="">
        <option value="">Choose...</option>
        <option value="java">java</option>
        <option value="go">go</option>
        <option value="python">pyhton</option>
        <option value="react">react</option>
        <option value="javascript">javascript</option>
    </select>`
    return markup
}

我目前正在执行以下操作,但是有没有更简洁的方法来执行此操作,因为我的列表会随着时间的推移而改变?

<select class="custom-select d-block" id="stack" required="">
    <option value="">Choose...</option>
    <option value="java"       ${task.stack.match("java") ? 'selected' : ''}>java</option>
    <option value="go"         ${task.stack.match("go") ? 'selected' : ''}>go</option>
    <option value="python"     ${task.stack.match("python") ? 'selected' : ''} >python</option>
    <option value="react"      ${task.stack.match("react") ? 'selected' : ''}>react</option>
    <option value="javascript" ${task.stack.match("javascript") ? 'selected' : ''}>javascript</option>
</select>

最佳答案

如果您将 option 元素的创建分开,可能会更清楚,这是一种可能的方法:

function getHtmlFromTask(task) {
    let markup =        
    `<select class="custom-select d-block" id="stack" value="${task.stack}" required="">
        <option value="">Choose...</option>
        ${ buildOption('java', task) }
        ${ buildOption('go', task) }
        ${ buildOption('python', task) }
        ${ buildOption('react', task) }
        ${ buildOption('javascript', task) }
    </select>`
    return markup
}

function buildOption(value, task) {
  return `<option value="${value}" ${task.stack.match(value) ? 'selected' : ''}>${value}</option>`
}

关于javascript - 从 javascript 文字设置选定选项的巧妙方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59768747/

相关文章:

javascript - NodeJS 14.x - 原生 AWS Lambda 导入/导出支持

c++ - 为什么文字在 C++ 中被视为表达式?

r - 基于 R Shiny "html template"的应用程序中的 highcharter 集成

web-component - HTML 模板与在 Web 组件中定义 HTML

javascript - jquery 显示隐藏 li 元素的问题

javascript - Firebase Facebook 登录并重定向返回空电子邮件

javascript - 如何在两个不同事件的同一 HTML 控件(文本字段)上调用两个不同的 javascript/jquery 函数?

javascript - Array(5) 是否等同于 var a = []; a.长度=5;在 JS 中?

dictionary - 在 Freemarker 中合并 map

javascript - 如何使用 jquery/javascript 在 html 模板中分离页眉页脚和侧边栏