我正在尝试更改基本<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吗?
答案 0 :(得分:2)
.childNodes[0]
没有孩子,因此在<p>
之前包含换行符和空格(至少在你的例)。您想获得第一个元素节点。
例如:
document.getElementById("SiteMenu").children[0].children[0].href = '...';
有关详细信息,请参阅.children
[MDN]。
备选方案,您可以迭代每个子节点并测试其.nodeType
[MDN]以查看它是否是元素节点。