Как достать данные из функции
Здравствуйте, извиняюсь если вдруг не в тот раздел с вопросом или же вопрос сам по себе дурацкий.
Вообщем столкнулся с такой проблемой - хочу из сайта вытащить при парсинге '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, время: 07:08. |