IF返回false,但应返回true



HTML:

<div class="container" id="1" onclick="test()">  </div>
<div class="container" id="2" onclick="test()">  </div>
<div class="container" id="3" onclick="test()">  </div>
<div class="container" id="4" onclick="test()">  </div>

JS:

{
document.getElementById(e.target.id).appendChild(document.NewDiv("div", {id:"element1"}));
if (document.getElementById("1").contains(document.getElementById("element1")) &&
document.getElementById("2").contains(document.getElementById("element1")))
{
console.log("yes")
}
else
{
console.log("no")
}
};

此代码返回"0";否";当element1在id为1和2的容器中时,但在我的意思中;是";

但是这个代码返回";是";应该是这样的-如果element1存在于两个容器中的至少一个容器中

{
document.getElementById(e.target.id).appendChild(document.NewDiv("div", {id:"element1"}));
if (document.getElementById("1").contains(document.getElementById("element1")) || //<-- changed
document.getElementById("2").contains(document.getElementById("element1")))
{
console.log("yes")
}
else
{
console.log("no")
}
};

我希望这个代码返回";是";如果element1在容器1和容器2 中

{
document.getElementById(e.target.id).appendChild(document.NewDiv("div", {id:"element1"}));
if (document.getElementById("1").contains(document.getElementById("element1")) &&
document.getElementById("2").contains(document.getElementById("element1")))
{
console.log("yes");
}
else
{
console.log("no");
}
};

在两个不同的容器中不能有相同的元素。因此,&&条件不可能为真,而||条件可以为真。

id属性必须是唯一的,同一文档中不应有多个具有相同id的元素。如果碰巧有多个元素具有相同的id,则只能选择具有document.getElementById()的第一个元素。

然而,理论上,您可以使用myelement.querySelector('[id="element1"]')来获取myelement容器中具有id的元素,但您应该通过不使用相同的id来修复代码。

if (document.getElementById("1").contains(document.getElementById("1").querySelector("[id='element1']")) &&
document.getElementById("2").contains(document.getElementById("2").querySelector("[id='element1']"))))
{
console.log("yes")
}
else
{
console.log("no")
}

最新更新