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

时间:2012-06-19 00:38:03

标签: javascript html dom

我正在尝试更改基本<a>的链接。它没有身份证。它位于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吗?

1 个答案:

答案 0 :(得分:2)

由于第一个孩子是文字节点

.childNodes[0]没有孩子,因此在<p>之前包含换行符和空格(至少在你的例)。您想获得第一个元素节点

例如:

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

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


备选方案,您可以迭代每个子节点并测试其.nodeType [MDN]以查看它是否是元素节点。