Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.03.2015, 00:41
ufo ufo вне форума
Интересующийся
Отправить личное сообщение для ufo Посмотреть профиль Найти все сообщения от ufo
 
Регистрация: 05.11.2013
Сообщений: 15

функция. ошибка... в чем проблема?
Добрый день!
Перейдем сразу к делу. идет вызов функции (строка 4)

if (/nebo.mobi/.exec(window.location)) {
    setInterval(function () {
        if (document.getElementById('cbx').checked) {
            var html = get_html('http://nebo.mobi/home', "http://nebo.mobi/home");

             var src = html.getElementsByClassName('tdn')[0].getElementsByTagName('IMG')[0].getAttribute('src');

                console.log(src);

        }
    }, 2000);
}


сама функция:
function get_html(url, ref_url) {
    var html;
    GM_xmlhttpRequest({
        method: "GET",
        url: url,
        headers: {
            Referrer: "http://nebo.mobi/home"
        },
        onload: function (response) {
            var parser = new DOMParser();
            html = parser.parseFromString(response.responseText, "text/html");
/*
var src = html.getElementsByClassName('tdn')[0].getElementsByTagName('IMG')[0].getAttribute('src');
console.log(src);
*/
        },
        onerror: function (response) {
            console.log(response);

        }
    });
    html = 'error';
    return html;
}


выдает ошибку: Uncaught TypeError: Cannot read property 'getElementsByClassName' of undefined script.js:102(anonymous function)

в чем проблема? если получать атрибут
html.getElementsByClassName('tdn')[0].getElementsByTagName('IMG')[0].getAttribute('src')
в самой функции - работает все отлично, вне функции не хочет.

подскажите, в чем загвоздка?
Ответить с цитированием
  #2 (permalink)  
Старый 14.03.2015, 09:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

ufo,
код первый строка 4 для получения html необходимо время - понятно?
Ответить с цитированием
  #3 (permalink)  
Старый 14.03.2015, 16:54
ufo ufo вне форума
Интересующийся
Отправить личное сообщение для ufo Посмотреть профиль Найти все сообщения от ufo
 
Регистрация: 05.11.2013
Сообщений: 15

Если честно, то нет
Объясните пожалуйста
Ответить с цитированием
  #4 (permalink)  
Старый 14.03.2015, 17:03
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

ufo,
запрос на сервер -- нужно время чтоб пришёл ответ с сервера -- а ваш код не ждёт исполняется сразу -- а onload ждёт ответ и только тогда исполняется
Ответить с цитированием
  #5 (permalink)  
Старый 14.03.2015, 21:37
ufo ufo вне форума
Интересующийся
Отправить личное сообщение для ufo Посмотреть профиль Найти все сообщения от ufo
 
Регистрация: 05.11.2013
Сообщений: 15

дык как так то?
я же вызываю функцию. return после onload
по идее функция должна выполнится и возвращать ...

почему это не так происходит? и как можно решить проблему?
Ответить с цитированием
  #6 (permalink)  
Старый 14.03.2015, 22:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

ufo,
решение использовать функцию в onload -- то есть обрабатывать ответ когда он приходит
Сообщение от bes
каждый в своей жизни должен создать тему с этим вопросом
Как передать объект в функцию.
Ответить с цитированием
  #7 (permalink)  
Старый 15.03.2015, 23:02
ufo ufo вне форума
Интересующийся
Отправить личное сообщение для ufo Посмотреть профиль Найти все сообщения от ufo
 
Регистрация: 05.11.2013
Сообщений: 15

спасибо за советы)))
впихнул туда synchronous: true, и опять ничего.
но возник вопрос, для чего нужен onerror: и как он работает?

Последний раз редактировалось ufo, 15.03.2015 в 23:10.
Ответить с цитированием
  #8 (permalink)  
Старый 16.03.2015, 00:26
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

ufo,
Цитата:
но возник вопрос, для чего нужен onerror: и как он работает?
Когда возникает ошибка, то будет вызываться onerror.

Прочти учебник на этом сайте, там всё объясняется.
Ответить с цитированием
  #9 (permalink)  
Старый 16.03.2015, 00:42
ufo ufo вне форума
Интересующийся
Отправить личное сообщение для ufo Посмотреть профиль Найти все сообщения от ufo
 
Регистрация: 05.11.2013
Сообщений: 15

а ошибка какого рода?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем ошибка в коде под ie8? addEventListener jssj Events/DOM/Window 1 30.11.2013 18:27
подскажите в чем ошибка? czp Общие вопросы Javascript 3 15.05.2012 21:48
Постоянно падает Firebug! В чем проблема? John Cannaby Общие вопросы Javascript 3 01.02.2012 08:21
Помогите. В чем проблема ? (toggle) brondex Events/DOM/Window 1 23.10.2011 18:48
Подскажите в чем ошибка? Виталий(FaT) Общие вопросы Javascript 4 14.05.2011 15:56