【问题标题】:how to add an Anchor tag in between an <h1>?如何在 <h1> 之间添加锚标记?
【发布时间】:2020-10-04 21:33:06
【问题描述】:

我从中得到的输出是suscribe herenoobie。我正在尝试在 h1

之间添加锚标记
let myElement = document.createElement("h1");
let myAttribute = document.createElement("a");
myAttribute.innerText = "noobie";
myElement.innerText = `suscribe ${myAttribute} here`;
myAttribute.classList.add("decoration");
myAttribute.setAttribute("href", "www.peo.com");
myElement.appendChild(myAttribute);
document.body.appendChild(myElement);

【问题讨论】:

标签: javascript html


【解决方案1】:

您试图在这里混合一些概念。 添加 DOM 节点的常规方法(即您使用 document.createElement 创建到 DOM 的方法是附加 appendChild

另一方面,通过使用innerText,您只是为一个元素设置text 值。你不能简单地在里面添加另一个 DOM 元素,比如 ${myAttribute}。这就是为什么你在两者之间看不到它。

有一些方法可以解决这个问题。 1)如果您只需要使用节点,请一直使用 DOM 节点并创建文本节点。对于您的示例,您可以为文本和锚节点创建 2 个文本节点,并以正确的顺序将它们全部添加到 h1,如下所示:

let myElement = document.createElement("h1");
let textNode1 = document.createTextNode("subscribe "); 
let textNode2 = document.createTextNode(" here");   
let myAttribute = document.createElement("a");
myAttribute.innerText = "noobie";
myAttribute.classList.add("decoration");
myAttribute.setAttribute("href", "www.peo.com");
myElement.appendChild(textNode1);
myElement.appendChild(myAttribute);
myElement.appendChild(textNode2);
document.body.appendChild(myElement);

2) 通过innerHTML 添加整个h1 内容,您可以在其中设置HTML 值。现在没有直接的方法将 DOM 节点转换为 HTML,因此您应该直接编写 HTML 而不是从中创建 DOM 节点(请参阅下文了解如何从 DOM 节点创建 HTML)。我不知道您的具体用例以确定您的首选选项:

let myElement = document.createElement("h1");
myElement.innerHTML = `suscribe <a href="www.peo.com" class="decoration">noobie</a> here`;
document.body.appendChild(myElement);

https://www.w3schools.com/jsref/prop_html_innerhtml.asp

如果您不想或不能这样编写 HTML,您可以通过将其包装在另一个元素中然后获取该包装节点的 innerHTML 来获取您的 DOM 节点的 HTML。您可以在以下答案中看到如何做到这一点: How to get the HTML for a DOM element in javascript

这样您仍然可以通过createElement 创建链接,但您不需要为文本创建文本节点。 这真的取决于你的情况,什么是最适合你的选择。

【讨论】:

  • 感谢您的帮助。直接写 HTML 更好,但有人告诉我这是学习 javascript 的最佳方式。
  • 老实说,我不同意。它可以帮助您及早理解 DOM 的概念,这是真的,但是您创建某些东西的进度可能非常缓慢。既然你想继续享受学习的乐趣,我认为你应该采用一种通过创造好的结果来保持你最大动力的方式。到目前为止,您在 HTML / CSS 方面的专业知识如何?你现在想用 Javascript 做什么?
  • @MatthiasS 我猜我是 css 的中级水平。接下来我要学习的是css中的动画和过渡。除了 css,我还在尝试学习 JavaScript,以便更好地理解框架。我还没有研究任何框架,但我对它真的很感兴趣
  • @RobertoCaboni 感谢您提及它,是的,这是一个错误。我更正了。
  • @dil。我绝对可以推荐 Vue.js,但我认为在接触反应式框架(如 Vue.js、React 或 Angular 等)之前了解一下 Javascript 是件好事。我认为一个很好的挑战是构建一些 HTML / CSS,然后用 JS 操作它,例如对按钮单击做出反应并显示/隐藏网站的某些部分,例如菜单或文本块。
【解决方案2】:

let myElement = document.createElement("h1");
let myAttribute = document.createElement("a");
let gebruikersnaam = 'noobie'
myAttribute.innerText = `suscribe here ${gebruikersnaam}`;
myAttribute.classList.add("decoration");
myAttribute.setAttribute("href", "www.peo.com");
myElement.appendChild(myAttribute);
document.body.appendChild(myElement);
我希望这就是你要找的。如果没有,请告诉我!

【讨论】:

【解决方案3】:

您可以使用
myAttribute.innerHtml="&lt;a href="..."&gt;....&lt;/a&gt;

您可以在此处找到更多 W3 学校的内部 html 示例: https://www.w3schools.com/jsref/prop_html_innerhtml.asp

【讨论】:

    猜你喜欢
    • 2020-01-15
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多