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

Javascript:get DOM元素的outerHTML*with*值

  •  2
  • Jellicle  · 技术社区  · 4 年前

    我观察到 outerHTML 因为输入似乎没有反映表单输入中的更新值/检查。有没有办法让我 外侧TML

    为了举例说明,我有一些表单输入:

    <input id="a" type="text" />
    <input id="b" type="text" value="ham" />
    

    我可以更改输入的值,但outerHTML不会更改。

    document.getElementById('a').value = 'cheese';
    document.getElementById('b').value = 'biscuit';
    document.getElementById('a').outerHTML // => <input id="a" type="text" />
    document.getElementById('b').outerHTML // => <input id="b" type="text" value="ham" />
    

    如果我创建一个新元素并将其添加到DOM中, document.body.outerHTML 保存新元素,但仍然没有更新的值:

    const c = document.createElement('input');
    c.id = 'c';
    c.type = 'text';
    document.body.appendChild(c);
    document.body.outerHTML /* => <body>
    <input id="a" type="text">
    <input id="b" type="text" value="ham">
    <input id="c" type="text"></body> */
    
    1 回复  |  直到 4 年前
        1
  •  0
  •   Manh Nguyen    4 年前

    您需要更改元素的属性才能更改outerHTML。试试这个:

    console.log(document.getElementById("a"));
    
    document.getElementById("a").setAttribute("value", "new value");
    
    console.log(document.getElementById("a"));
    <input id="a" type="text" />
    <input id="b" type="text" value="ham" />