代码之家  ›  专栏  ›  技术社区  ›  DCR

在预标记之前插入

  •  -1
  • DCR  · 技术社区  · 2 年前

    我需要从javascript将一些文本插入到预标记中。我尝试了以下操作:

    <!DOCTYPE html>
    <html>
    
    <body>
      
      <pre id='test'> some
    text</pre>
    
      <script>
        // Create a "span" element:
        const newNode = document.createElement("span");
        // Create a text node:
        const textNode = document.createTextNode(" Water ");
        // Append text node to "span" element:
        newNode.appendChild(textNode);
    
        // Insert before existing child:
        const list = document.getElementById("test");
        list.insertBefore(newNode, list.children[0]);
      </script>
    
    </body>
    
    </html>

    但我的输出是:

     some
    text water
    

    但我需要:

     water some
    text
    
    4 回复  |  直到 2 年前
        1
  •  0
  •   Unmitigated    2 年前

    您需要在之前插入 firstChild ,而不是第一个元素。

    const newNode = document.createElement("span");
    const textNode = document.createTextNode(" Water ");
    newNode.appendChild(textNode);
    const list = document.getElementById("test");
    list.insertBefore(newNode, list.firstChild);
    <pre id='test'> some
    text</pre>

    您可以使用来简化此过程 Element#prepend

    const span = Object.assign(document.createElement('span'), {textContent: " Water "});
    document.getElementById("test").prepend(span);
    <pre-id=“测试”>一些
    文本</pre>
        2
  •  0
  •   DCR    2 年前

    因此,您似乎需要使用innerText和模板文字:

    start = document.getElementById("putItHere").innerText
    document.getElementById("putItHere").innerText = `water ` + start
     
    <pre id="putItHere">some
    text
    </pre>
        3
  •  0
  •   XMehdi01    2 年前

    使用 insertAdjacentHTML 带位置 afterbegin 它在的开头插入指定的HTML内容 pre 元素:

    // Create a "span" element:
    const newNode = document.createElement("span");
    // Create a text node:
    const textNode = document.createTextNode(" Water ");
    // Append text node to "span" element:
    newNode.appendChild(textNode);
    
    // Insert at the beginning of the pre element:
    const preElement = document.getElementById("test");
    preElement.insertAdjacentHTML('afterbegin', newNode.outerHTML);
    <pre id='test'> some
    text</pre>
        4
  •  -1
  •   Escape75    2 年前

    这样的怎么样?

    const list = document.getElementById("test");
    list.parentNode.insertBefore(newNode, list);
    

    https://jsfiddle.net/ptqby9rL/

    是的,要进入预赛,你可以做:

    const list = document.getElementById("test");
    list.innerHTML = "<span> Water </span>" + list.innerHTML;