包装在两个容器中的未命名 href 链接

Unnamed href link wrapped in two containers

本文关键字:未命名 链接 href 两个 包装      更新时间:2023-09-26

我正在尝试更改基本<a>的链接。它没有 id。它位于我无法直接访问的标头.aspx文件中。它也是 id 为"SiteMenu"的div 的第一个孙子元素。从那个div 中,我想使用以下脚本。(我可以将脚本引用放在页脚中并上传到主题目录):

document.getElementById("SiteMenu").childNodes[0].childNodes[0].href = "/search.aspx?keyword='+'&page=1";`

还尝试过:

document.getElementById("SiteMenu").firstChild.childNodes[0].href = "/search.aspx?keyword='+'&page=1";`

HTML 的基本结构是:

<div id="SiteMap">
    <p>
        <a href="/home.aspx">Home</a>
    </p>
</div>

我不是JS专业人士。从我在这里发布之前阅读的一些内容来看,似乎childNodes.childNodes是一种在JS(或DOM?)中搜索节点级别的无效方式。

还有其他方法可以操纵我的标签的 href 吗?

.childNodes[0]不会有任何子节点,因为第一个子节点是一个文本节点,包含<p>之前的换行符和空格(至少在您的示例中)。你想要获取第一个元素节点

例如:

document.getElementById("SiteMenu").children[0].children[0].href = '...';

有关更多信息,请参阅 .children [MDN]。


或者,您可以遍历每个子节点并测试其.nodeType [MDN] 以查看它是否是元素节点。