В Dart должен element.html(" ") встречаться в контексте тега body?

TableElement table = new TableElement();
document.body.children.add(table);
table.children.add(new Element.html("<tr><td>test</td></tr>"));

Приведенный выше фрагмент кода возвращает ошибку: "Uncaught Bad state: No element". Чтение документации API на веб-сайте DartLang объясняется тем, что при использовании конструктора Element.html ("") фрагмент HTML анализируется так, как если бы он имел место в контексте тега . Поэтому нам нужно написать:

new Element.html("<table><tr><td>test</td></tr></table>")

Тем не менее, читая "дротик в действии", Крис Бакетт использует этот же синтаксис при построении таблицы.

Что-то изменилось или я что-то недопонимаю?

1 ответ

Решение

Это "особенность" браузера. <tr> элемент не может существовать сам по себе и просто удаляется из HTML, когда находит его.

Документы для new Element.html() говорит

Создает элемент HTML из допустимого фрагмента HTML.

В качестве альтернативы вы можете использовать

  table.append(
      new TableRowElement()..append(new TableCellElement()..text = 'test'));

Пример DartPad

Другие вопросы по тегам