是否可以通过属性's值,并将属性设置为parentNode

Is it possible to get element id by attribute's value and set an attribute to the parentNode

本文关键字:属性 设置 parentNode 可以通过 是否      更新时间:2024-06-17

我试图通过href值获取一个元素,并获取该元素的parentNode,最后将parentNode设置为属性。

这里有一个代码解释了我要做的事情:

        var uri = "index.html"; //just for the example
        var elementA = document.querySelector("." + uri);
        var elementLi = elementA.parentNode;
        elementLi.setAttribute("class", "current-menu-item");

它所说的问题:未捕获的类型错误:无法读取null 的属性"parentNode"

我几乎没有读到其他和我类似的问题,但都没有解决。据我所知,querySelector并没有提供您可以对元素执行的所有功能,因为此方法返回一个静态列表。

有可能在这里做我想做的事吗?

如果我的问题不清楚,请评论并让我知道我会努力改进问题

属性节点已弃用,只需使用setAttribute方法:

elementLi.setAttribute("class", "current-menu-item");

然而,您的实际问题是elementLiundefined,因为elementA不是元素节点——querySelectorAll返回需要循环的节点集合!

var uri = "index.html"; //just for the example
var elementsA = document.querySelectorAll("a[href="+JSON.stringify(uri)+"]");
for (var i=0; i<elementsA.length; i++) {
    var elementLi = elementsA[i].parentNode;
    elementLi.setAttribute("class", "current-menu-item");
}

如果你只使用querySelector来获得一个元素,它可能仍然是null,所以最好检查一下:

var uri = "index.html"; //just for the example
var elementA = document.querySelector("a[href="+JSON.stringify(uri)+"]");
if (elementA) {
    var elementLi = elementA.parentNode;
    elementLi.setAttribute("class", "current-menu-item");
}