@Wolfak

Как организовать выбор новости из списка (JavaScript + RSS or HTML парсер)?

Парсирую данные с сервера с помощью HTML или RSS парсера.

У каждой записи имеется общий id для стиля CSS и уникальный идентификатор передающийся JS функции (в атрибуте class="id" или date-id="id");

Но так как эти данные загружаются с сервера или задаются в самом коде JS, то функция отслеживающая клики по этим записям для перехода с помощью WinJS.Navigation.navigate не работает.

Собственно как сделать чтобы функция по отслеживанию клика по данным загружаемом из вне в этом же JS файле работала? Пишу в Visual Studio под Windows Market.

Функция отслеживающая клики:
function ToStory(eventInfo) {
        var link = eventInfo.target;
        var storyid = link.className;
        if ((storyid == '') || (storyid == 0)) {
            WinJS.Navigation.back(10).done();
        } else {
            WinJS.Navigation.navigate("/pages/story/story.html");
        }
    }

Функция загрузки RSS данных:
function loadRemoteXhr() {

        document.getElementById("topstory").innerHTML = "";
        WinJS.xhr({ url: "ссылка на RSS" }).then(
            xhrParseXml, xhrError
            );

    }

    function xhrParseXml(result) {

        var outputArea = document.getElementById("topstory");
        var xml = result.responseXML;


        if (xml) {
            var items = xml.querySelectorAll("rss > channel > item");
            if (items) {
                var length = Math.min(10, items.length);
                for (var i = 0; i < length; i++) {
                    var link = document.createElement("li");
                    link.setAttribute("id", "tostory");
                    link.setAttribute("class", items[i].querySelector("link").textContent);
                    link.innerText = items[i].querySelector("title").textContent;
                    outputArea.appendChild(link);
                }
            } else {
                outputArea.innerHTML = "There are no items available at this time";
            }
        } else {
            outputArea.innerHTML = "Unable to retrieve data at this time. Status code: " + statusCode;
        }
    }
    function xhrError(result) {

        var statusCode = result.status;
        var outputArea = document.getElementById("topstory");
        outputArea.innerHTML = "Unable to retrieve data at this time. Status code: " + statusCode;
    }

Вызов функций:
//RSSload
loadRemoteXhr();

//Навигация
tostory.addEventListener("click", ToStory, false);

HTML код:
<div id="blocks">
<div id="blocktit">Популярные истории</div>
<ul id="topstory"></ul>
</div>
  • Вопрос задан
  • 3047 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Wolfak Автор вопроса
Возможно проблема из-за того, что в Visual Studio нельзя давать нескольким элементам одинаковое значение id, но как тогда можно написать обработчик в название объекта которого прибавить уникальный номер? например
<div id="bl1"></div>
<div id="bl2"></div>

И обработчик
bl[i].addEventListener("click", ToStory, false);
Как так можно сделать?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы