【问题标题】:Convert "Same" Multiple <Button> Functions to Generic Function with <Select>使用 <Select> 将“相同”的多个 <Button> 函数转换为通用函数
【发布时间】:2017-07-29 11:37:26
【问题描述】:

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

这些是我想用一个按钮变成&lt;select&gt; 框的按钮:

<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";
}

【问题讨论】:

  • 感谢您缩短我的回答。我想我的英语在谈论代码时不是那么好。谢谢... @jcuenod

标签: javascript jquery html select option


【解决方案1】:

这是一个sn-p,我认为不需要太多解释。

我创建了一个文件类型数组,并使用 jquery 用&lt;option&gt;s 填充&lt;select&gt;。然后我只查找点击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>

【讨论】:

  • 谢谢兄弟。它工作完美。现在我想知道有没有办法在不使用“jquery”的情况下做到这一点?如果不是,那么我将简单地使用 jquery,但如果可能的话,我希望它独立于 jquery。遗憾的是,我不能给你点赞,因为我需要超过 15 的声誉,而现在我只有 11。这是因为我刚刚开始使用这个页面。这个账号我很久以前就有了,但是一直没用过。
  • @SeekLoad 您应该能够接受代表为 11 的答案。没有 jquery 很容易做到这一点 - 我只使用 jquery 用 &lt;option&gt;s 填充 &lt;select&gt; 所以我对它的使用与您的问题完全无关,因此您可以根据需要构建 &lt;select&gt; 元素。我使用 jquery 是因为你用 jquery 标记了你的问题。
  • @SeekLoad 另外,我已经对您的问题进行了大量编辑,以向您展示如何在未来提出更好的问题。尝试将您的代码减少到最重要的部分,这样可以更容易地回答问题。如果可能的话,让它成为能够得到其他人可以从中受益的答案的问题。
  • 好的,谢谢。将来我会缩短它。是的,我可以看到并接受 11 代表的答案,我说的是没有 15 代表我不能给喜欢。我想给你一个 +1 喜欢。
猜你喜欢
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多