【问题标题】:creating an Element and assign it to a variable创建一个元素并将其分配给一个变量
【发布时间】:2021-02-09 07:35:54
【问题描述】:

您好希望有人可以帮助我: 我正在像这样在 JS 中创建元素:

let ptag = document.createElement("p");
    // create textNode
    let pNode = document.createTextNode("X-Done");
    // append pNode to paragraph
    ptag.appendChild(pNode);
    console.log(ptag);

输出是:<p>X-Done</p> 这是我所期待的。

但是当我把 ptag 放到这行代码中时:

let para = document.createElement("p");
// create textNode
let myNode = document.createTextNode(i + ". " + invoer + ptag);
// append myNode to paragraph
para.appendChild(myNode);
let elem = document.getElementById('myDiv');
elem.appendChild(para);

输出是: 1. sss [object HTMLParagraphElement] 当我将它添加到屏幕上的一个 div 中时。

为什么它在一个段落中返回 [object HTMLParagraphElement] 而不是 X-done? 感谢您的澄清,这可能吗?

【问题讨论】:

  • 因为您的 ptag 是一个 DOM 元素。尝试改用ptag.innerHTML
  • iinvoer 是什么?
  • 很好,感谢您的回复。我正在尝试制作一个待办事项列表: i 是一个计数器,而 invoer 是来自似乎工作正常的输入字段的输入。您的帮助几乎将我带到了那里,我现在得到了输出: 1. 在 p 标签中的 Invoer X-Done。如何在自己的 p-tag 中获取 ptag?因为我想让 X-Done 可以点击,这样我就可以删除整个 p 标签。
  • 很好,感谢您的回复。我正在尝试制作一个待办事项列表: i 是一个计数器,而 invoer 是来自似乎工作正常的输入字段的输入。您的帮助几乎将我带到了那里,我现在得到了输出: 1. 在 p 标签中的 Invoer X-Done。如何在自己的 p-tag 中获取 ptag?因为我想让 X-Done 可点击,所以我可以删除整个 p 标签。使 p 成为一个跨度,但它现在仍然是一个完整的 p 标签。对不起,我是 JS 的新手。 screencast.com/t/mt8O9wzVR1AG 看到这个你就明白了。谢谢
  • 尝试从document.createTextNode(i + ". " + invoer); 中删除ptag。然后在para.appendChild(myNode); 之后使用para.appendChild(ptag) 将您的ptag 添加到您的para

标签: javascript html variables concatenation createelement


【解决方案1】:

你不能这样做:"。" + invoer + ptag

let ptag = document.createElement("p");
let pNode = document.createTextNode("X-Done");
ptag.appendChild(pNode);

let para = document.createElement("p");
let myNode = document.createTextNode("text");
para.appendChild(myNode);

let wrapper = document.createElement("div");
wrapper.append(ptag);
wrapper.append(para);

【讨论】:

    【解决方案2】:

    这是因为你把你的ptag 放在createTextNode 里面,把它变成了一个字符串。尝试使用ptag 的内容,例如:

    let ptag = document.createElement("span");
    // create textNode
    let pNode = document.createTextNode("X-Done");
    // append pNode to paragraph
    ptag.appendChild(pNode);
    
    
    let i = "i";           // Added because they are no where to be found in your snippet
    let invoer = "invoer"; // Added because they are no where to be found in your snippet
    
    let para = document.createElement("p");
    // create textNode
    let myNode = document.createTextNode(i + ". " + invoer);
    // append myNode to paragraph
    para.appendChild(myNode);
    para.appendChild(ptag);
    let elem = document.getElementById('myDiv');
    elem.appendChild(para)
    <div id="myDiv"></div>

    【讨论】:

    • 很好,感谢您的回复。我正在尝试制作一个待办事项列表:i 是一个计数器,而 invoer 是来自似乎工作正常的输入字段的输入。您的帮助几乎将我带到了那里,我现在得到了输出: 1. 在 p 标签中的 Invoer X-Done。如何在自己的 p-tag 中获取 ptag?因为我想让 X-Done 可点击,所以我可以删除整个 p 标签。使 p 成为一个跨度,但它现在仍然是一个完整的 p 标签。对不起,我是 JS 的新手。 screencast.com/t/mt8O9wzVR1AG 看到这个你就明白了。谢谢
    • @easyrlj 然后,不要将其添加到createTextNode 中,而是将其附加到para,就像使用myNode 一样。查看我更新的 sn-p
    • 现在工作正常,另外我还有一个问题,是否可以在这个动态生成的 span 中添加点击功能?
    猜你喜欢
    • 1970-01-01
    • 2021-04-07
    • 2021-11-29
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    相关资源
    最近更新 更多