1

所以当我想生成一系列类似于下面的 div 时,我开始使用 innerHTML。

<div id="123233"></div>
<div id="123234"></div>
<div id="123235"></div>

现在我意识到我想直接链接到这些 div。

例如:www.example.com/page#123234

我发现了一些场景。

  1. 如果我直接访问 www.example.com/page#123234,它的行为就好像 #123234 不存在一样。
  2. 如果我首先访问 www.example.com/page 然后在 url 中添加 #123234 ,它会按需要工作。
  3. 如果我去 www.example.com/page#123234 然后再次写入相同的 url 它不起作用。
  4. 如果我执行方案 2,然后重新加载页面,它会保持在相同的位置。
  5. 如果我执行方案 2 并再次写入相同的 url,它就不起作用。

所以考虑到这一点,我有我的问题......

如何直接链接到由 innerHTML 生成的 div?

附加信息:

我希望该链接可以在任何地方工作。可以是外部域或只是另一个页面,如 www.example.com/startpage。

4

2 回答 2

1

在您的 JavaScript 中,您必须要么使用某种类型onload的脚本,要么将所有脚本放在最后,以便您可以使用 innerHTML。我假设前者。所以你有了:

window.onload = function () {
    document.body.innerHTML += "<div id="123233"></div>";
};

如果您添加一行来刷新哈希(# 之后的位),那么它应该滚动到您期望的位置:

window.onload = function () {
    document.body.innerHTML += "<div id=\"123233\"></div>";
    window.location.hash = window.location.hash;
};

所做的只是将散列设置为已经设置的值,但不同之处在于它在设置时是有效的散列,而在页面首次加载时不是。

于 2012-10-18T09:23:05.487 回答
1

由于您为每个元素分配了一个 ID,因此您可以在创建元素后通过其 ID 找到该元素,并在从查询字符串中获取它之后,然后将页面向下滚动到其位置。

我建议使用 javascript 命令而不是使用 innerHTML 创建元素,因为您已经通过这种方式引用了它们。

此外,据我所知,ID 应该以 HTML 规范的字母开头。

于 2012-10-18T09:24:04.543 回答