【问题标题】:HTML tag to javascript createElementHTML 标记到 javascript createElement
【发布时间】:2021-03-30 02:08:30
【问题描述】:

我在尝试用 Javascript DOM 编写 HTML 代码时遇到了很多问题。这个网站是我最后的希望。 我想转换这个 HTML 标签:

<div class="received_msg">
   <div class="received_withd_msg">
      <p>
         <b>Username: </b> Hello everyone!
      </p>
   </div>
</div>

这是我目前所写的:

var div2 = document.createElement('div');
div2.className = 'received_msg';

var div3 = document.createElement('div');
div3.className = 'received_withd_msg';

var par = document.createElement('p');

var bold = document.createElement('b')

div2.innerHTML += div3.outerHTML;
par.innerHTML += bold.innerHTML + data.username + ' : ' + data.msg;

document.querySelector('#message').append(div2);
document.querySelector('#message').append(par);

上面的 javascript 代码没有打印出我想要的 HTML 代码。正确的做法是什么?

请注意,data.username 和 data.msg 是完整代码中引用的变量。

【问题讨论】:

  • 你应该追加,而不是设置innerHTML

标签: javascript html css dom


【解决方案1】:

您应该将您创建的元素附加到它们的父元素中

var div2 = document.createElement('div');
div2.className = 'received_msg';

var div3 = document.createElement('div');
div3.className = 'received_withd_msg';

var par = document.createElement('p');

var bold = document.createElement('b');
bold.textContent = "hello";
// var boldTxt = document.createTextNode("Hello");
// bold.appendChild(boldTxt);


var txt = document.createTextNode(" World");

div2.appendChild(div3);
div3.appendChild(par);
par.appendChild(bold);
par.appendChild(txt);

document.body.append(div2);

【讨论】:

    【解决方案2】:

    使用 vanilla JS 编写 HTML 可能真的令人困惑 :) 如上所述,将子元素附加到父元素在许多方面会更容易和更好。只是为了用你的案例和所有变量来完成整个想法:

    var data = {username: 'John Doe', msg: 'Hello World!'};
    var root = document.querySelector('#root');
    
    var div2 = document.createElement('div');
    div2.className = 'received_msg';
    
    var div3 = document.createElement('div');
    div3.className = 'received_withd_msg';
    
    var par = document.createElement('p');
    var bold = document.createElement('b');
    bold.textContent = `${data.username}: `;
    par.appendChild(bold);
    var text = document.createTextNode(data.msg);
    par.appendChild(text);
    
    div3.appendChild(par);
    div2.appendChild(div3);
    root.appendChild(div2);
    &lt;div id="root"&gt;&lt;/div&gt;

    【讨论】:

    • 谢谢!不幸的是,我不能赞成你的回答,因为我是新手。是的,javascript 让我很困惑,直到现在我才写过 javascript 代码。猜猜我有很多学习要做!再次感谢您的贡献:D
    • 我很乐意为您提供帮助,祝您学习顺利,只是一开始很难(没有:D)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2014-04-07
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多