1

私は次のHTMLを持っています:

<tr>
  <td><!--Component_property:price--></td>
  <td><!--Component_property:size--></td>
  <td><!--Component_property:total--></td>
</tr>

後でテーブル内に挿入するつもりです。それが string 内に含まれているとしますs。私がこれを行うとき:

var fragment = new DocumentFragment.html(s);
print(fragment.innerHtml);

出力は次のとおりです。

<!--Component_property:price-->
<!--Component_property:size-->
<!--Component_property:total-->

つまり、タグ<td><tr>タグがすべて取り除かれます。これは、タグがタグ内<table>または他のタグと一緒にある場合には発生しません。これは、フラグメント内のコードが無効であることを Dart が単に好まないことを示唆しています。

可能な回避策は何ですか?

4

2 に答える 2

1

バリデーターではないと思います。それはコンストラクタの実装です:

HTML フラグメントは、<body>タグのコンテキスト内で発生したかのように解析されます。これは、要素<caption>のスコープ内で解析する必要があるような特別な要素が削除さ<table>れることを意味します。createFragmentコンテキスト HTML フラグメントを解析するために使用します。

次のようなことをすべきだと思います:

DocumentFragment df = new Element.table().createFragment(s);

(未検証。)

https://api.dartlang.org/stable/1.16.1/dart-html/Element/Element.html.html

于 2016-05-31T22:58:34.587 に答える
1

trdart:html DOM クラスを使用してandtd要素を構築することをお勧めします。たとえば、次のことができます。

import 'dart:html';

void main() {
  var tr = new TableRowElement();
  tr.children.addAll([
      new TableCellElement()..text = 'x',
      new TableCellElement()..text = 'y']);
  querySelector('#myTable').children.add(tr);
}

これは を構築しtr、いくつかtdの を追加し、全体を に追加し<table>ます。

于 2014-01-06T17:41:15.397 に答える