将元素插入DOM而不是使用dart:html附加

w.b*_*ian 4 dart

Elementdart:html中的基础对象有一个属性elements,它是一个实现List<E>.该add方法将元素附加到DOM.我想在DOM中添加或插入一个元素.没有实现任何插入方法ElementList.我怎样才能做到这一点?

Joh*_*ans 5

因此,假设您有此HTML代码段:

<body>
    <div id='test'></div>
</body>
Run Code Online (Sandbox Code Playgroud)

你可以这样做在div之前插入一个元素:

// Get the sibling that we want to insert before.
final el = query('#test');

// From the parent element, we call insertBefore, referencing the
// sibling that we want to insert the new element before.
document.body.insertBefore(new Element.tag('p'), el);
Run Code Online (Sandbox Code Playgroud)

现在你的HTML将是:

<body>
    <p></p>
    <div id='test'></div>
</body>
Run Code Online (Sandbox Code Playgroud)


Mat*_*t B 5

除了John的答案.您还可以使用以下语法:

final el = query('#test');

// If you want an element
el.insertAdjacentElement('beforebegin', new Element.tag('p'));
// If you want to insert HTML tags
el.insertAdjacentHTML('beforebegin', '<p>Hello</p>');
// Insert just text
el.insertAdjacentText('beforebegin', 'Hello there');
Run Code Online (Sandbox Code Playgroud)

你可以使用位置参数:beforebegin,afterbegin,beforeend,afterend将它放在另一个元素的开头之前,就在元素的开头,在元素的结尾之内,或者只是在元素的结尾之外,分别.