Как достать данные из функции
Здравствуйте, извиняюсь если вдруг не в тот раздел с вопросом или же вопрос сам по себе дурацкий.
Вообщем столкнулся с такой проблемой - хочу из сайта вытащить при парсинге 'name', который, как оказалось, находится в функции. Т.е. var elem = document.getElementsByClassName('js_playerName5'); сonsole.log(elem); --- [item: function, namedItem: function] Перелопатил много чтива, но так и не понял - могу я как-то или нет добраться внутрь за текстом ? Вот сюда. Если смотреть исходник, то это выглядит вот так Спасибо заранее за советы. |
В какой такой функции? Все лежит в хтмле, если брать только этот кусок, то надо взять коллекцию тегов h1 и получить с каждого textContent;
var h1s = table.getElementsByTagName('h1'); console.log(h1s[0].textContent) // тут будет ваш Фобос. Нет, будет вот так: Игрок: Фобос textContent возвращает голимый текст со всех тегов внутри указанного. |
А вот и нет.
Когда я пробовал над сохранённой версией странички, то было всё отлично: Делал так и получал результат: function getPlayerNamEE(param) { var name = ''; var param_split = param.split(':'); console.log(param_split); var name_id = "js_playerName" + param_split[2]; //тут я получаю "js_playerName5" var elem = document.getElementsByClassName(name_id); if (elem[0] != null) { //сюда заходит, т.к. elem[0] есть console.log(elem[0]); var player_id = elem[0].querySelector('[id^="player"]'); if (player_id != null) { var listSpan = player_id.getElementsByTagName('span'); if (listSpan[0] != null) { name = listSpan[0].innerHTML; } } } return name; } Всё потому что var elem = document.getElementsByClassName(name_id); срабатывал, и у меня был elem[0]. А когда я начал пробовать это же но уже в живую, то elem мне возвращался в виде функции [item: function, namedItem: function]. Не как лист. Т.е. elem.length = 0 и я не могу взять elem[0] - он попросту undefined. Вот как быть ? |
getElementsByClassName вроде как возвращает NodeList (грубо говоря массив)
|
у тебя видимо он не находит массив
<html> <head> <title>Тестирование</title> </head> <body> <div class="myclass">1</div> <div class="myclass1">2</div> <div class="myclass">3</div> <div>4</div> <script> var collection = document.getElementsByClassName('myclass'); console.log(collection); console.log('найдено элементов: ' + collection.length); </script> </body> </html> |
Вот ещё раз, наглядно:
Пробую искать js_playerName5: (пробую сразу 2 способами) var elem = document.getElementsByClassName('js_playerName5'); console.log(elem); console.log("Elem lenght: " + elem.length + " - " + elem[0]); var elem = $(".js_playerName5"); console.log(elem); console.log("Elem lenght: " + elem.length + " - " + elem[0]); Консоль: [item: function, namedItem: function] Elem lenght: 0 - undefined [prevObject: b.fn.b.init[1], context: document, selector: ".js_playerName5", jquery: "1.9.1", constructor: function…] Elem lenght: 0 - undefined Над сохранённой версией странички: [td.playername.js_playerName5.vacation.inactive, item: function, namedItem: function] Elem lenght: 1 - [object HTMLTableCellElement] [td.playername.js_playerName5.vacation.inactive, prevObject: b.fn.b.init[1], context: document, selector: ".js_playerName5", jquery: "1.9.1", constructor: function…] Elem lenght: 1 - [object HTMLTableCellElement] К слову о "не находит". Он-то находит, но оно, как я понял, не массив, а функция - объект. |
значит у тебя нет элемента с классом js_playerName5.
нажми ctrl + U и сделай поиск по "js_playerName5" ctrl +F |
Цитата:
|
если эти данные добавляются динамически, то тогда вам надо (да и вообще лучше там проверять) зайти во вкладку Elements(f12, отладчик) и тоже нажать ctrl + F. т.е. в чем разница между тем и этим поиском? там вы видите те данные которые вам прислал сервер и если вы добавляли\редактировали\уд аляли элементы то вы этого там не увидите. а во вкладке Elements высвечиваются данные по-факту. т.е. то что у вас есть в данный момент
|
Цитата:
Добавлю - что пытаюсь достать через js из темпермонки. Может надо как-то ждать чтоб "всё прогрузилось", или всё же искать как-то по другому. |
Часовой пояс GMT +3, время: 09:01. |