0

我正在尝试更改基本的链接<a>。它没有 id。它位于我无法直接访问的 header.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吗?

4

1 回答 1

2

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

例如:

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

有关详细信息,请参阅.children [MDN]


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

于 2012-06-19T00:53:35.390 回答