不要な動画を隠すためにYouTubeのDOMを操作したいのですが、私はこのエラーで苦労しています 'innerText' of undefined
。「.getElementsByClassName」が2回呼び出されたようです
これらは問題のある部分のソースコードです。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();
}
}
クロムコンソールはChannelNameはを示し、要素は、このようなカウント:
これら2つの結果が異なっているが、これらは同時に実行されます。より正確には、SidebarItems[_count].getElementsByClassName('g-hovercard');
が2回実行されているように見え、前の結果を置き換えました。その結果、ChannelName.length == 0
はtrue
となり、return;
が実行されます。
どうすればいいのかわかりません。スタックが爆発し、私の頭は同じになる。
助けてください!
次に、 'SidebarItems.length'を初期長さの値を格納する変数に変更する必要がありますか? –