将变量重新输入循环函数

时间:2017-04-26 00:08:53

标签: javascript function loops

我正在尝试制作一个简单的程序,用于在base64中对事物进行多次编码(不是出于任何特殊原因,更多的是作为示例和实践)。我一直遇到很多麻烦,可能是因为我没有足够的(或可能有太多)咖啡。

我似乎无法弄清楚如何将我的变量(文本)重新输入到编码它的函数中,直到i等于times

对此有任何帮助将不胜感激!

<html>
    <head>
        <script>
        function encodeThis(text,times) {
            var toEncode = text;
            for (var i = 0; i < times, i++) {
                btoa(toEncode);
            }
            document.getElementById("result").value = toEncode;
        }
        </script>
    </head>
    <body>
        <b>Text to Encode</b><br/>
        <input type="text" id="encode"><br/>
        <b>Number of Times to Encode (Integers Only)<br/>
        <input type="text" id="times">
        <button type="submit" onclick="encodeThis(encode,times)">Test</button>
        <br/>
        <br/>
        <b>Result</b><br/>
        <input type="text" id="result">
    </body>
</html>

我是否需要在该函数内部放置一个函数来重新输入变量?

1 个答案:

答案 0 :(得分:1)

您需要将编码结果分配回变量。

function encodeThis(text, times) {
  var toEncode = text;
  for (var i = 0; i < times, i++) {
    toEncode = btoa(toEncode);
  }
  document.getElementById("result").value = toEncode;
}

但就示例中的整体代码而言,您还需要实际从#encode#times元素中获取文本,并修复for循环中的语法错误。

所以

function encodeThis(text, times) {
  var toEncode = text.value, // read the value from the encode input element
    numTimes = parseInt(times.value, 10); // read the value from the times element and convert to number

  for (var i = 0; i < numTimes; i++) {
    toEncode = btoa(toEncode);
  }
  document.getElementById("result").value = toEncode;
}
<b>Text to Encode</b><br/>
<input type="text" id="encode" /><br/>
<b>Number of Times to Encode (Integers Only)</b><br/>
<input type="text" id="times" />
<button type="submit" onclick="encodeThis(encode,times)">Test</button>
<br/>
<br/>
<b>Result</b><br/>
<input type="text" id="result">