Javascript 看来';。getElementsByClassName';打了两次电话
我想操纵youtube的DOM来隐藏不需要的视频,我正在努力解决这个错误Javascript 看来';。getElementsByClassName';打了两次电话,javascript,Javascript,我想操纵youtube的DOM来隐藏不需要的视频,我正在努力解决这个错误 未定义的“innerText” 这些是问题部分的源代码,SidebarItems是播放视频时包含“相关视频”元素的数组 var SidebarItems=document.getElementsByClassName('video-list-item'); 对于(_count=0;_count
未定义的“innerText”
这些是问题部分的源代码,SidebarItems
是播放视频时包含“相关视频”元素的数组
var SidebarItems=document.getElementsByClassName('video-list-item');
对于(_count=0;_count
Chrome控制台显示通道名称和元素计数,如下所示:
这两个结果是不同的,但它们是同时执行的。更准确地说,它似乎是SidebarItems[_count].getElementsByClassName('g-hovercard')代码>执行两次,并替换上一次的结果。结果,ChannelName.length==0
变为true
,并且返回代码>已执行
我不知道怎么可能。堆栈会爆炸,我的头也会爆炸
请帮忙 SidebarItems[_count].getElementsByClassName('g-hovercard')代码>出现在for
循环中
(_count=0;_count
每次调用其中包含GetElementsByCassName
的行时,它都有一个不同的值\u count
,那么我是否应该将SidebarItems.length
更改为一些存储初始长度值的变量?
var SidebarItems = document.getElementsByClassName('video-list-item');
for(_count = 0; _count < SidebarItems.length; _count++)
{
// Is Replaced Video Contaions Blocked Keyword?
var VideoName = SidebarItems[_count].getElementsByClassName('title');
if(VideoName.length == 0)
{
return;
}
if(ValidateString(VideoName[0].innerText))
{
SidebarItems[_count].remove();
continue;
}
// Is Replated Video Registered by Blocked Channel?
var ChannelName = SidebarItems[_count].getElementsByClassName('g-hovercard');
console.debug(ChannelName);
console.debug("Element Count = " + ChannelName.length);
if(ChannelName.length == 0)
{
return;
}
if(ValidateChannelName(ChannelName[0].innerText))
{
SidebarItems[_count].remove();
}
}
for(_count = 0; _count < SidebarItems.length; _count++)