我想操纵youtube的DOM以隐藏不需要的视频,我正在努力解决这个错误
'innerText' of undefined
。
这些是有问题的部分的源代码,SidebarItems
是具有"相关视频的数组"播放视频时的元素。
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();
}
}
Chrome控制台会显示ChannelName和Element Count,如下所示:
这两个结果不同,但这些结果是同时执行的。更准确,似乎SidebarItems[_count].getElementsByClassName('g-hovercard');
执行了两次,并取代了之前的结果。结果,ChannelName.length == 0
变为true
,并且return;
已执行。
我不知道它是怎么回事。堆栈正在爆炸,我的头也一样。
请帮忙!
答案 0 :(得分:0)
SidebarItems[_count].getElementsByClassName('g-hovercard');
出现在for
循环中。
for(_count = 0; _count < SidebarItems.length; _count++)
每次调用其中包含getElementsByClassName
的行时,它都会有_count
的不同值。