在 createTextNode() 中使用变量而不是字符串

Posted

技术标签:

【中文标题】在 createTextNode() 中使用变量而不是字符串【英文标题】:use variable instead of string in createTextNode() 【发布时间】:2021-01-23 18:50:01 【问题描述】:

我正在尝试通过 javascript 向 ul 添加另一个 li。我希望 li 根据现有变量具有动态内容。我可以让它使用字符串附加一个 li 没问题。只有当我使用变量时才会出错

//Adding to List
listOfPlayers.style.display = "block";
var node = document.createElement("LI");
var textnode = document.createTextNode(playerInput.value);
node.appendChild(textnode);
listOfPlayersNumerated.appendChild(node);

问题在于:

var textnode = document.createTextNode(playerInput.value);

我尝试了一个文字字符串(如下所示),它没有问题

var textnode = document.createTextNode("New Player");

【问题讨论】:

你在哪里声明playerInput.value 什么是playerInput.value var x = 'hello'; document.createTextNode(x); 如果将其粘贴在控制台中,则可以正常工作。所以这表明您使用的变量有问题。 我在 Codepen 上试了一下,效果很好。我认为您在这里遇到了不同的问题。 我声明 playerInput.value 高一点 var playerInput = document.getElementById("playerInput"); @dwosk @VLAZ 【参考方案1】:

所以我改变了它,这样你就可以看到变量的来源......

顶部:

var inputPlayer = document.getElementById("inputPlayer");

然后我只需添加 .value 即可获得下面输入的值:

//Adding to List
listOfPlayers.style.display = "block";
var playerName = playerInput.value;
console.log(playerName);
var node = document.createElement("LI");
var textnode = document.createTextNode(playerName);
node.appendChild(textnode);
listOfPlayersNumerated.appendChild(node);

它会在控制台中记录它,但它不会出现在 ul 上

【讨论】:

【参考方案2】:

好的,我相信它不喜欢这个范围。尽管在控制台中打印出变量。我搬家了

var playerName = playerInput.value;

向上和退出当前功能。奇怪的是 console.log() 会接受它,但 .createTextNode() 在那个范围内不会接受

因此,通过移动在函数外部声明新变量的位置,它似乎解决了问题

【讨论】:

以上是关于在 createTextNode() 中使用变量而不是字符串的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中innerHTML与innerText,createTextNode的区别

在 Removechildnode 之后删除 CreateTextNode 添加的空白

使用 createTextNode() 但我需要向其添加 HTML 标记 (JavaScript/JQuery)

innerHTML 和 document.createTextNode 有啥区别 [重复]

大文本字符串中的 CreateTextNode 转义字符

如何使用带有 createTextNode() 的列表的第一个子项