2

在 Dart 中,我试图在 div 元素中动态添加 HTML。

注意:mainContainer 元素只是我的 HTML 代码中的一个 div

import 'dart:html';

main()
{ 
  loadHTML("web/html/test.html");
}

void loadHTML(String fileName) 
{
  DivElement div = query("#mainContainer");
  div.children.clear();

  HttpRequest.getString(fileName).then((resp) {
    div.appendHtml(resp);
  });
}

这是 test.html 仅用于测试目的

<h1 id="test">test</h1>

问题是当我想查询#test时它找不到任何东西

...
main()
{ 
  loadHTML("web/html/test.html");

  Element elem = query("#test");
  if (elem == null)
  {
    print("element is null");
  }
}
...

是因为 HTML 还没有加载到文档中吗?我不确定这里发生了什么。实际的 HTML 显示在浏览器中,但它找不到test

使用 Dart SDK 版本 0.5.5.0_r22416

4

1 回答 1

5

您的代码当前的组织方式是#test在将 HTML 片段附加到div. 如果您执行#test回调中需要的内容,则应该可以:

HttpRequest.getString(fileName).then((resp) {
  div.appendHtml(resp);
  Element elem = query("#test");
  if (elem == null)
    print("element is null");
});

如果您不清楚发生了什么,您的 HttpRequest 是异步的。这是应该的(您不想在等待网络时阻塞),但是您的代码需要考虑到这一点;您不能期望获取的 HTML 仅仅因为 loadHTML()已经返回就被添加到页面中。

于 2013-05-08T01:57:40.827 回答