使用 <Select> 将 "Same" 多个 <Button> 函数转换为泛型函数

Convert "Same" Multiple <Button> Functions to Generic Function with <Select>

我有多个按钮,它们的功能都非常相似。我如何使用一个 <select> 盒子和一个 <button> 来用更少的 javascript 做同样的事情?

这些是我想变成一个只有一个按钮的 <select> 框的按钮:

<button onclick="SaveAsHTML()">Save As HTML</button>
<button onclick="SaveAsJS()">Save As JS</button>
<button onclick="SaveAsCSS()">Save As CSS</button>
<button onclick="SaveAsTXT()">Save As TXT</button>

这是我现在的 javascript:

function SaveAsHTML()
{
    var filename = document.getElementById("txtFilename").value;
    var filename = filename + ".html";
}

function SaveAsCSS()
{
    var filename = document.getElementById("txtFilename").value;
    var filename = filename + ".css";
}

function SaveAsJS()
{
    var filename = document.getElementById("txtFilename").value;
    var filename = filename + ".JS";
}

function SaveAsTXT()
{
    var filename = document.getElementById("txtFilename").value;
    var filename = filename + ".txt";
}

这是一个片段,我认为不需要太多解释。

我创建了一个文件类型数组,并使用 jquery 将 <select> 填充为 <option>。然后,当您单击 save 按钮时,我只查找选择了哪一个...

var types = [
  {"extension": "html", "name": "HTML"},
  {"extension": "txt", "name": "Plain Text"},
  {"extension": "js", "name": "Javascript"},
  {"extension": "css", "name": "CSS"},
]
types.forEach(function(type) {
  $opt = $("<option>").attr("value", type.extension).text(type.name)
  $("#saveas").append($opt)
})

function SaveAsType()
{
    console.log($("#saveas").val())
    /**
     * Put your code here and replace:
     document.getElementById("inputFileNameToSaveAs").value + ".html";
     * with
     document.getElementById("inputFileNameToSaveAs").value + "." + $("#saveas").val();
     */
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Save as <select id="saveas">
</select><button onclick="SaveAsType()">save</button>