set/getAttribute 比较只适用于字符串?

Gro*_*ler 2 html javascript boolean setattribute getattribute

我想将span节点的visited属性设置为truefalse基于它是否已被访问。

test();

function test () {

    var el = document.createElement("span");
    el.setAttribute("visited", false);

    el.setAttribute("visited", true);

    alert(el.getAttribute("visited") === true); //False
    alert(el.getAttribute("visited") === "true"); //True

}
Run Code Online (Sandbox Code Playgroud)

我最初将属性“visited”设置为 boolean false,然后将 boolean 设置为true。我注意到当我检查属性是否为 时true,它返回 false,但如果我检查字符串true,它返回 true。

MSN文件只谈与attributeName为需要的字符串,而不是价值。那么为什么不与 bool 进行比较呢?

小提琴

Tus*_*har 5

这是因为getAttribute返回类型是 string 而不是 bool

返回值: 一个字符串,表示指定属性的值

注意:如果该属性不存在,则返回值为null或空字符串("")