JavaScript 函数 运行 通过 onload 未按预期更新 href 属性

JavaScript function run via onload isn't updating href attribute as expected

我正在与托管在同一主机上的两个站点合作,它们希望通过具有符号 links linking 目录树来共享一些 html 文件,但具有独立的 "branding" 当查看页面时,所以我认为可以使用 window.location.hostname 发现获取适当的数据,然后根据该数据执行 "branding customizations",其中最重要的只是一个简单的 link 返回相应站点的联系数据。所以,我想同时更改 link 和 linked 文本。

没问题,我想,只需在主体中使用 "onload=" 到 运行 函数或在脚本级别放置 window.onload=

函数触发,没问题,但它没有更新我要更新的项目,因为它一直响应 .setAttribute 的目标为空。以下是摘录:

    function setContact()
    {
      // var ourURL = window.location.href;
      var DN = window.location.hostname;
      // if structure using DN to come up with the changes omitted
      // "contactLnk" is both the name of the anchor and the name
      // of the variable set by the if structure
      var targetLink = document.getElementById("contactLnk");
      targetLink.setAttribute('href', contactLnk);
    }
  </script>

函数 运行s 但没有效果,java 脚本控制台显示:

TypeError: targetLink is null

我有一些类似但不同的代码可以正常工作,但它们都是由 mouseover 或 onclick 等启动的。

显然我是 "doing it wrong." 洞察力赞赏

代码如下:

<html>
<head>
<title>Some Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#AAD7B9" text="#000000" onload="setContact();">
  <script type = "text/javascript">
    function setContact()
    {
      var DN = window.location.hostname;
      var targetLink = document.getElementById("contactLnk");
      targetLink.setAttribute('href', "http://"+DN+"/index.html");
    }
  </script>

<p>
Nav section deleted in whole. Has nothing to do with it anyway.
</p>

<p>
<a name="contactLnk" onload="setContact();" href="not.us">Some Link Text</a>
</p>

</body>
</html>

您需要将 html 元素中的名称更改为 id,这样 getElementById 才能正常工作。

<a id="contactLnk" onload="setContact();" href="not.us">Some Link Text</a>

如您所见,不存在 ID 为 "contactLnk" 的元素。