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

时间:2012-10-18 09:11:59

标签: javascript innerhtml

所以当我想生成一系列类似于以下内容的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然后在网址中添加#123234,则可以根据需要使用。
  3. 如果我访问www.example.com/page#123234然后再次使用相同的网址写入则无效。
  4. 如果我执行方案2然后重新加载页面,它将保持在同一位置。
  5. 如果我执行方案2并再次写入同一个网址则无效。
  6. 所以考虑到这一点,我有我的问题......

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

    其他信息:

    我希望这个链接可以在任何地方使用。可以是外部域名,也可以是其他页面,例如www.example.com/startpage。

2 个答案:

答案 0 :(得分: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;
};

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

答案 1 :(得分:1)

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

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

另外,据我所知,ID应该以HTML格式的字母开头。