pthon
@pthon

Почему is not a function?

Пишу скрипт на TamperMonkey, по задумке он должен получать все ссылки на видео, которые на странице.
Ошибка:
TypeError: document.getElementsByClassName(...).getElementsByTagName is not a function
    at eval (userscript.html?id=3257d2c5-e1ee-4a26-a8d1-04f00f02cbee:19)
    at Window.eval (userscript.html?id=3257d2c5-e1ee-4a26-a8d1-04f00f02cbee:23)
    at <anonymous>:2:494
    at eval (userscript.html?id=3257d2c5-e1ee-4a26-a8d1-04f00f02cbee:2)
    at eval (userscript.html?id=3257d2c5-e1ee-4a26-a8d1-04f00f02cbee:3)
    at Object.eval (userscript.html?id=3257d2c5-e1ee-4a26-a8d1-04f00f02cbee:25)
    at eval (userscript.html?id=3257d2c5-e1ee-4a26-a8d1-04f00f02cbee:27)
    at eval (<anonymous>)
    at <anonymous>:2:494
    at Object.b [as F_c] (<anonymous>:1:414)

Код:
var url = document.getElementsByClassName('video_item').getElementsByTagName('a').getAttribute('href');
    var dlina = url.length;
    console.log("Найдено url видео:"+dlina);
  • Вопрос задан
  • 335 просмотров
Решения вопроса 3
@tyzberd
потому, что getElementsByClassName возвращает массивоподобный (итерируемый) объект всех дочерних элементов, соответствующих всем из указанных имен классов и нужно обойти их циклом, или написать
document.getElementsByClassName('video_item')[0].getElementsByTagName('a')[0].getAttribute('href');

если нужны только первые
Ответ написан
Комментировать
pavelkarinin
@pavelkarinin
Full Stack Web Developer
Потому что document.getElementsByClassName('video_item') возвращает массив (коллекцию) элементов, а эта коллекция (будучи своего рода объектом) не имеет такой функции как getElementsByTagName
Ответ написан
Комментировать
LaRN
@LaRN
Senior Developer
Вызов document.getElementsByClassName('video_item') возвращает HTMLCollection, а у него нет метода getElementsByTagName.

https://developer.mozilla.org/ru/docs/Web/API/Docu...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы