Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получение параметра обьекта (https://javascript.ru/forum/misc/36976-poluchenie-parametra-obekta.html)

Torero 02.04.2013 23:19

Получение параметра обьекта
 
Есть сайт с обьявлениями Slando.ua. Захожу на к примеру вот это обьявление. http://shostka.sum.slando.ua/obyavle...promoted;r:;s:
Номер телефона по умолчанию скрыт. Открывается по клику на кнопку. Хочу спарсить его) Нахожу по тегу элемент:
s = document.getElementsByTagName('a')
s[51] - искомый кусок, содержащий следующее(смотрю через Firebug):

<a class="clicker {clickerID:'phone_details','path':'phone', 'id':'5j1mD', 'id_raw': '78415159' } atClickTracking link spoiler small link-phone nowrap" rel="phone" href="javascript:void(0);">

Если выполнить функцию s[51].click(); то картинка появится. При этом в Firebug отобразится get-ответ:

"<img src=\"http:\/\/shostka.sum.slando.ua\/ajax\/misc\/phoneimage\/5j1mD\/?nomobile=1\" class=\"contactimg\" \/>"

Как мне или записать весь этот ответ в переменную или как вытащить 'id' со свойств класса? s[51].id ничего не возвращает.

nikita.mmf 02.04.2013 23:53

document.querySelector("a[rel='phone']").className.match(/\{.*\}/)[0]

danik.js 03.04.2013 00:06

<a class="clicker {clickerID:'phone_details','path':'phone', 'id':'5j1mD', 'id_raw': '78415159' } atClickTracking link spoiler small link-phone nowrap" rel="phone" href="javascript:void(0);">
<script>
    var link = document.querySelector('a.clicker');
    var data = link.className.match(/{.*}/);
    var object = eval( '(' + (data || 'null') + ')');
    if (object) {
        alert(object.id);
    }
</script>

Torero 03.04.2013 00:21

Спасибо. Воспользовался первым ответом и сделал вот так:
getid = document.querySelector("a[rel='phone']").className.match(/\{.*\}/)[0];
m = getid.split(':');
n = m[3].split('\'');
href = 'http://shostka.sum.slando.ua/ajax/misc/phoneimage/'+n[1]+'/?nomobile=1';
alert(href);

Но, как я понимаю, вариант во втором комменте предпочтительней, потому что он будет более стойким к всяческим изменениям внутри самого сайта. Спасибо большое) Буду ковыряться дальше.

Aetae 03.04.2013 10:27

danik.js,
Ай-ай-ай, eval'ить почём зря - плохой вариант.

danik.js 03.04.2013 12:18

Цитата:

Сообщение от Aetae
Ай-ай-ай, eval'ить почём зря - плохой вариант.

А как нужно? Научи..

Aetae 04.04.2013 01:42

JSON.parse же. А вообще лучше вручную - всё равно уж регулярку заюзал.)

danik.js 04.04.2013 02:13

Цитата:

Сообщение от Aetae
JSON.parse

Так там не well-formed JSON, или как это называется, литерал чтоли.
Вобще какой тормоз до такого вобще додумался. Мало того что не JSON, так еще и в класс засунули.:-/


Часовой пояс GMT +3, время: 12:44.