【问题标题】:User input name JavaScript output is equal to variable attached to each letter in the name [closed]用户输入名称 JavaScript 输出等于附加到名称中每个字母的变量 [关闭]
【发布时间】:2020-04-14 04:41:48
【问题描述】:

这是我的第一个 JavaScript 项目。我想要做的是当用户在那里输入名称时,例如“Blake”它将输出“Bravo Lima Alpha Kilo Echo”。因此,无论用户输入什么,它都会输出每个字母变量等于什么。我添加了一张图片以更好地解释我在说什么。我也了解当有人以表格形式输入名称时,它会在那里输出名称。但我不确定如何输出一个等于名称中每个字母的变量。

var A = "Alpha";
var B = "Bravo";
var C = "Charlie";
var D = "Delta";
var E = "Echo";
var F = "Foxtrot";
var G = "Golf";
var H = "Hotel";
var I = "India";
var J = "Juliett";
var K = "Kilo";
var L = "Lima";
var M = "Mike";
var N = "November";
var O = "Oscar";
var P = "Papa";
var Q = "Quebec";
var R = "Romeo";
var S = "Sierra";
var T = "Tanga";
var U = "Uniform";
var V = "Victor";
var W = "Whiskey";
var X = "X-ray";
var Y = "Yankee";
var Z = "Zulu"; 



document.getElementById("test").innerHTML =
A + "<br>" + B + "<br>" + C;
<div id="test">

</div>

【问题讨论】:

    标签: javascript forms variables input output


    【解决方案1】:

    无需更改代码的简单代码

    HTML:

    <input type="text" id="test">
    <button id="btn">submit</button>
      <div id="output">
    
    

    javascript:

    var A = "Alpha";
          var B = "Bravo";
          var C = "Charlie";
          var D = "Delta";
          var E = "Echo";
          var F = "Foxtrot";
          var G = "Golf";
          var H = "Hotel";
          var I = "India";
          var J = "Juliett";
          var K = "Kilo";
          var L = "Lima";
          var M = "Mike";
          var N = "November";
          var O = "Oscar";
          var P = "Papa";
          var Q = "Quebec";
          var R = "Romeo";
          var S = "Sierra";
          var T = "Tanga";
          var U = "Uniform";
          var V = "Victor";
          var W = "Whiskey";
          var X = "X-ray";
          var Y = "Yankee";
          var Z = "Zulu"; 
          var obj = {
            a: A,
            b: B,
            c: C,
            d: D,
            e: E,
            f: F,
            g: G,
            h: H,
            i: I,
            j: J,
            k: K,
            l: L,
            m: M,
            n: N,
            o: O,
            p: P,
            q: Q,
            r: R,
            s: S,
            t: T,
            u: U,
            v: V,
            w: W,
            x: X,
            y: Y,
            z: Z
          }
          var ele1 = document.getElementById("test");
          var ele2 = document.getElementById("output");
          var ele3 = document.getElementById("btn");
          var val="";
          ele3.addEventListener("click", function(e){
            var arr = ele1.value.split('');
            for (let index = 0; index < arr.length; index++) {
              val += obj[arr[index]] + ' ';
            }
            ele2.innerHTML = val;
          })
    

    【讨论】:

      【解决方案2】:

      您需要遍历 input 并在 div 中设置值。假设input 是您输入名称的inputid

      HTML:

      <input type="input" />
      <div id="test">
      
      </div>
      
      

      JS

      var data = {
       A: "Alpha",
       B: "Bravo",
       C: "Charlie",
       D: "Delta",
       E: "Echo",
       F: "Foxtrot",
       G: "Golf",
       H: "Hotel";,
       I: "India",
       J: "Juliett",
       K: "Kilo",
       L: "Lima",
       M: "Mike",
       N: "November",
       O: "Oscar",
       P: "Papa",
       Q: "Quebec",
       R: "Romeo",
       S: "Sierra",
       T: "Tanga",
       U: "Uniform",
       V: "Victor",
       W: "Whiskey",
       X: "X-ray",
       Y: "Yankee",
       Z: "Zulu"
      }
      
      document.getElelementById("input").addEventListener("change", function() {
          const input = this.value;
          let name = "";
          for(let i = 0; i < input.length; i++){
             name = `${name} ${data[input[i].toUpperCase()]}`;
          }
          document.getElementById("test").innerHTML = name;
      })
      

      【讨论】:

        【解决方案3】:
        Here the catch would be how should we able to get the variable value after splitting the work entered in the input.. Use eval('Z') which would evaluate that as a JS code , in this case a variable     
        <code>
            var name = "Blake";
            var A = "Alpha";
            var B = "Bravo";
            var C = "Charlie";
            var D = "Delta";
            var E = "Echo";
            var F = "Foxtrot";
            var G = "Golf";
            var H = "Hotel";
            var I = "India";
            var J = "Juliett";
            var K = "Kilo";
            var L = "Lima";
            var M = "Mike";
            var N = "November";
            var O = "Oscar";
            var P = "Papa";
            var Q = "Quebec";
            var R = "Romeo";
            var S = "Sierra";
            var T = "Tanga";
            var U = "Uniform";
            var V = "Victor";
            var W = "Whiskey";
            var X = "X-ray";
            var Y = "Yankee";
            var Z = "Zulu"; 
            var nameArr = name.split("");
            var output="";
            for(var xx=0;xx<nameArr.length;xx++){
            console.log(nameArr[xx]);
            output+=eval(nameArr[xx].toUpperCase())+" ";
            }
            console.log(output); // Assign this value to a ID using innerHTML function
            </code>
        

        【讨论】:

          【解决方案4】:

          除了将每个代码都作为一个新变量之外,您还可以使用一个数组(最好是一个映射),然后检查输入名称的每个字母 检查数组是否有任何以该字母开头的单词,类似于以下内容:

          let codes = ["Alpha","Bravo","Charlie","Delta","Echo","Foxtrot","Golf","Hotel","India","Juliett","Kilo","Lima","Mike","November","Oscar","Papa","Quebec","Romeo","Sierra","Tanga","Uniform","Victor","Whiskey","X-ray","Yankee","Zulu"];
          
          input.addEventListener("keyup", (e) => {
            let code = [];
            let name = e.target.value.toUpperCase();
            for (let i = 0; i < name.length; i++) {
              for (let j = 0; j < codes.length; j++) {
                if (name[i] === codes[j][0]) {
                  code.push(codes[j]);
                  continue;
                }
              }
            }
            document.getElementById("test").innerHTML = code.join(" ");
          });
          <input type="text" id="input" />
          <div id="test"></div>

          【讨论】:

          • 有趣的是我刚刚了解了变量,我只是认为你可以将变量设置为等于你设置的任何值。所以我认为你可以将它实现为一个表单。
          • 您可以将它们设置为任何值,但在您的情况下,您最好使用包含键值对的map 等数据结构。就像,“A”=>“Alpha”。
          【解决方案5】:

          我会使用string.split()array.map()array.join() 的组合

          既然你说你是 JS 的新手,我也会直接告诉你查看我用作 .map() 回调的 arrow functions

          var A = "Alpha";
          var B = "Bravo";
          var C = "Charlie";
          var D = "Delta";
          var E = "Echo";
          var F = "Foxtrot";
          var G = "Golf";
          var H = "Hotel";
          var I = "India";
          var J = "Juliett";
          var K = "Kilo";
          var L = "Lima";
          var M = "Mike";
          var N = "November";
          var O = "Oscar";
          var P = "Papa";
          var Q = "Quebec";
          var R = "Romeo";
          var S = "Sierra";
          var T = "Tanga";
          var U = "Uniform";
          var V = "Victor";
          var W = "Whiskey";
          var X = "X-ray";
          var Y = "Yankee";
          var Z = "Zulu"; 
          
          
          
          
          function spellWord(word){
            const uppercaseWord = word.toUpperCase() // in case they type lowercase letters
            const array = uppercaseWord.split('')
            const newArray = array.map(letter => window[letter])
            return newArray.join(' ')
          }
          
          document.getElementById("test").innerHTML = spellWord("testing")
          <div id="test">
          
          </div>

          【讨论】:

          • 我将不得不弄清楚如何将此代码附加到表单中,哈哈……但我认为您可能至少已经掌握了其中的一部分。谢谢
          • 我编辑了我的答案以包括一个首先将其转换为大写的步骤,因为您正在接受用户的输入
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-03-04
          • 2021-12-12
          • 2020-04-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多