javascript - div 中仅附加了一个 <br> 元素

标签 javascript html css function createelement

我试图在除法元素中插入三个换行符,但只有一个换行符。

    function insertNewGame(linkOfGame, imageOfGame) {
      var para = document.createElement("div");
      var image = new Image(300, 450);
      var hyperlink = document.createElement("a");
      var lnBreak = document.createElement("br");
      
      image.src = imageOfGame;
      hyperlink.innerHTML = "Play Now";
      hyperlink.href = linkOfGame;
      
      para.appendChild(image);
      para.appendChild(lnBreak);
      para.appendChild(lnBreak);
      para.appendChild(lnBreak);
      para.appendChild(hyperlink);
      para.style.margin = "20px";
      document.getElementById("gamesList").appendChild(para);

    }

这里有什么问题?我该如何纠正它?

最佳答案

引用完全相同节点的变量

appendChild() 参数 lnBreak 是同一个节点,所以它只需要创建的确切节点并重新追加 2 次(参见 answer) .因此,您需要克隆节点,或者不使用变量引用节点,或者呈现 htmlString 等。

在 Demo #1 中,节点 lnBreak 被附加,然后被克隆并再附加两次。

para.appendChild(lnBreak);
para.appendChild(lnBreak.cloneNode(true));
para.appendChild(lnBreak.cloneNode(true));

演示#1

function insertNewGame(linkOfGame, imageOfGame) {
  var para = document.createElement("div");
  var lnBreak = document.createElement('br');
  var image = new Image(300, 450);
  var hyperlink = document.createElement("a");
  image.src = imageOfGame;
  hyperlink.innerHTML = "Play Now";
  hyperlink.href = linkOfGame;
  para.appendChild(image);

  para.appendChild(lnBreak);
  para.appendChild(lnBreak.cloneNode(true));
  para.appendChild(lnBreak.cloneNode(true));

  para.appendChild(hyperlink);
  para.style.margin = "20px";
  document.getElementById("gamesList").appendChild(para);
}

insertNewGame('about:blank', 'https://via.placeholder.com/150/150');
<section id='gamesList'></section>


在 Demo #2 中,添加了一个 for 循环,并在没有变量的情况下调用了 .createElement() 方法。

for (let i=0; i < 3; i++) {
  para.appendChild(document.createElement('br'));
}

演示#2

function insertNewGame(linkOfGame, imageOfGame) {
  var para = document.createElement("div");
  var image = new Image(300, 450);
  var hyperlink = document.createElement("a");
  image.src = imageOfGame;
  hyperlink.innerHTML = "Play Now";
  hyperlink.href = linkOfGame;
  para.appendChild(image);

  for (let i = 0; i < 3; i++) {
    para.appendChild(document.createElement('br'));
  }

  para.appendChild(hyperlink);
  para.style.margin = "20px";

document.getElementById("gamesList").appendChild(para);
}

insertNewGame('about:blank', 'https://via.placeholder.com/150/150');
<section id='gamesList'></section>


在 Demo #3 中,htmlString 被渲染成真正的 HTML

para.insertAdjacentHTML('beforeEnd', `<br><br><br>`);

演示#3

function insertNewGame(linkOfGame, imageOfGame) {
  var para = document.createElement("div");
  var image = new Image(300, 450);
  var hyperlink = document.createElement("a");
  image.src = imageOfGame;
  hyperlink.innerHTML = "Play Now";
  hyperlink.href = linkOfGame;
  para.appendChild(image);

  para.insertAdjacentHTML('beforeEnd', `<br><br><br>`);

  para.appendChild(hyperlink);
  para.style.margin = "20px";
  document.getElementById("gamesList").appendChild(para);

}

insertNewGame('about:blank', 'https://via.placeholder.com/150/150');
<section id='gamesList'></section>

关于javascript - div 中仅附加了一个 <br> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67798543/

相关文章:

css - 网站在 azure 上发布时浏览器找不到字体

javascript - 两个视觉上相同的文本与剪贴板中的文本有何不同?

javascript - 基于登录用户的条件查询

javascript - Angular UI Grid 附加选择列

php - 多复选框,可以选中所有和取消选中所有

html - 如何显示以 longblob 形式保存在数据库中的图像?

css - Mac 浏览器的兼容性问题

javascript - HTML5 输入类型 ="range"图像不透明度

javascript - 成功更新数据后再次进行ajax POST调用

javascript - 自动扫描并聚焦 HTML 页面的元素