【问题标题】:How to store strings in an array that include Template Literals (Javascript)? [duplicate]如何将字符串存储在包含模板文字(Javascript)的数组中? [复制]
【发布时间】:2020-04-15 21:30:46
【问题描述】:

我正在尝试将大量文本存储在一个数组中(这样我就可以使用一个值轻松地将其取出)。 问题出在我想使用模板文字的字符串中,因此字符串会根据输入而变化(例如,一旦他们添加了他们的名字,它就会使用他们的名字。

如果我在函数中包含字符串,我可以让这个工作没有问题。例如:

textbox.textContent =  `what does ${nameTemp} do?`;

这没问题,它将“nameTemp”更改为用户输入的内容。但是下面没有!它总是返回“tim”作为名称(“nameTemp”的默认值)

textbox.textContent2 = Title[1]; 

您可以在函数 saveName() 的下面代码中看到第一行(包含模板文字的完整字符串确实有效。但下面的行使用数组中的字符串(包含模板文字)不更新。它使用默认字符串 'tim'。 我究竟做错了什么?我怎样才能最好地将字符串存储在具有可更改元素的数组中?在此先感谢您的任何建议。

var nameTemp = `tim`;

let Title = [];
Title[0] = "What are you called?";
Title[1] = `what does ${nameTemp} do?`;

const input = document.createElement('input');
input.type = "text";
input.id ="nameText";
input.className +='inputStyle';

 function addNameInput()
    {
     container.appendChild(input);
    }

 function saveName()
    {
     if (nameText.value !== null)
     {
     nameTemp = nameText.value;
     textbox.textContent =  `what does ${nameTemp} do?`; //This works, it displays the inputed name
     textbox.textContent2 = Title[1];  // This will always display 'tim'
     nameText.parentNode.removeChild(nameText);
     incrementState();
     }
    }

【问题讨论】:

    标签: javascript arrays template-literals


    【解决方案1】:

    Javascript 模板字符串在您首次创建它们时进行评估,它们不会神奇地更新。 Title[1]"tim" 初始化,即使更改了nameTemp 变量,它也将保持不变。如果要将模板字符串存储在数组中,则可以存储一个返回模板字符串的函数,例如:

    Title[1] = () => `what does ${nameTemp} do?`;
    

    那么你可以通过

    textbox.textContent2 = Title[1]();
    

    【讨论】:

    • 你的传奇!效果很好!!非常感激。我已经按照这些思路“几乎”尝试了很多东西,但就是想不通。非常感谢!
    • 再次感谢您在这方面的帮助。任何想法如何将其制成嵌套数组?我一直在尝试,但无法让它发挥作用。我试图得到类似 Title[1][1] 的东西,但是,如果我尝试一个普通的嵌套数组,它会返回字符串,而不是值。如果我得到一个嵌套数组,我无法得到长度:code let testC = []; testC[1,1] = () => You are ${_name}.; testC[1,2] = () => Now ${_name} do something ; code 这行得通,因为我可以使用 testC[x,y] 来控制它,但我无法获得“y”的长度(第二个数组。
    • testC[1, 1] 将不起作用,因为 1, 1 的计算结果为 1,这意味着 testC[1, 1] 只是 testC[1]
    猜你喜欢
    • 2011-08-12
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 2012-09-19
    • 2014-06-14
    • 1970-01-01
    • 2012-07-29
    相关资源
    最近更新 更多