我写了这个脚本,以便在网站上刊登广告。一整天都在努力。
这是JS代码:
var timer = setInterval(deletor, 1);
function deletor() {
timer;
var slider = document.querySelector("#slider-con");
var bannerTop = document.querySelector("#MainContent > div:nth-child(2)")
var bannerMiddle = document.querySelector("#MainContent > iframe");
var bannerRandom = document.querySelector("#MainContent > div:nth-child(7)");
var bannerRandom2 = document.querySelector("#MainContent > div:nth-child(6)");
if (slider == undefined) {
return false;
} else {
slider.parentNode.removeChild(slider);
};
if (bannerTop == undefined) {
return false;
} else {
bannerTop.parentNode.removeChild(bannerTop);
};
if (bannerMiddle == undefined) {
return false;
} else {
bannerMiddle.parentNode.removeChild(bannerMiddle);
};
if (bannerRandom == undefined) {
return false;
} else {
bannerRandom.parentNode.removeChild(bannerRandom);
};
if (bannerRandom2 == undefined) {
return false;
} else {
bannerRandom2.parentNode.removeChild(bannerRandom2);
};
};
现在,如您所见,它首先获取值,然后通过if语句。其背后的想法是:第一次尝试时,它将删除元素,而在第二次尝试时,它将停止功能。 但是,当我插入最后一个元素时,它不会将其删除。该ID是正确的,所有内容都是正确的,但不会删除该元素,因此我不断收到相同的警报。
另外,我发现,我在两个地方得到了这个横幅广告。当我有“ var bannerRandom = document.querySelector(“#MainContent> div:nth-child(7)”);“这个,它显示为“ document.querySelector(”#MainContent> div:nth-child(6)“)”这个,当我两者都出现时,它显示为“ document.querySelector(”#MainContent> div:nth-child (6)“)”这个。而且它没有被删除。
控制台没有显示错误。
答案 0 :(得分:1)
您的各种形式的声明:
if (slider == undefined) {
return false;
} else {
slider.parentNode.removeChild(slider);
};
这表示:“如果在DOM中找不到slider
,请退出该功能。否则,请删除滑块并继续该功能。”
因此,这意味着您的函数将在您要查找的元素之一不存在时第一次终止。由于此后终止,因此不检查其后的其他元素。这似乎不太可能是您想要做的。
您可能只是想要:
if (slider) {
slider.parentNode.removeChild(slider);
}
...等等。
请注意,不要将;
放在流控制语句(如if
或else
)附加的块的末尾,这就是为什么我在上面删除了它的原因。 (这样做是无害的,因为JavaScript会忽略它们;但这毫无意义。)