Получение кнопки для отображения следующей итерации цикла из файла XML

Хорошо, вот что я пытаюсь сделать. У меня есть XML файл, содержащий 1000 классифицированных объявлений для моего работодателя, и он хочет, чтобы каждое объявление показывало по одному элементу за раз. У меня загружен файл XML и вы можете отправить его, чтобы опубликовать первое объявление, но я понятия не имею, как заставить его перейти к следующему элементу в цикле или вернуться назад, что было, если у меня возникли проблемы. Вот код для попытки продвижения вперед.

var x=xmlDoc.getElementsByTagName("item");
for (i=0;i
<p> Итак, что я пытаюсь сделать, это щелчок на кнопке. Я могу отправить следующее объявление и удалить первый, представленный с помощью кнопки "вперед", и получить обратную кнопку, чтобы сделать полную противоположность</p>
2 ответа

Вот две функции, которые вам нужны: DEMO

Из вашего кода это как извлечь сначала весь item из вашего XML файла, а затем через цикл вы получите каждое description из них. Это приведет к созданию списка, хранящегося в x var.

Это создает список всех элементов элемента в вашем XML файле (это полный метод ниже)

var connectXMLFile = new XMLHttpRequest();

Определить, какой файл открыть и отправить запрос

connectXmlFile.open("GET","PathToYourXMLFile.xml", false);
connectXMLFile.setRequestHeader("Content-Type", "text/xml");
connectXMLFile.send(null);

Получить ответ и все item элементов

var xmlDoc = connectXMLFile.responseXML;
var x=xmlDoc.getElementsByTagName("item");

Представляет список объявлений, которые вы получили

var adsList = [];

Затем цикл, чтобы получить каждое description и добавить его в список

for (var i=0;i
<p> Представляет текущее объявление.</p> <pre class="prettyprint linenums">var adNumber = 0; function forward() { if (adNumber >= adsList.length) adNumber = 0; document.getElementById("ad").innerHTML = adsList[adNumber]; adNumber++; } function backwards() { if (adNumber == 0) adNumber = adsList.length; document.getElementById("ad").innerHTML = adsList[adNumber - 1]; adNumber--; } </pre> <p> Это основано на коде, который вы предоставили, если вам нужно какое-либо объяснение, не стесняйтесь спрашивать.</p>


Вы можете сохранить все описания объявлений в массиве и запомнить текущий индекс (тот, который был показан). Демо.

Образец кода. Я предполагаю, что у вас есть две кнопки с идентификаторами назад/вперед где-то на вашей странице.

var fakeAds = Array.apply(null, new Array(1000)).map(function(_, i){
 return 'some random text ' + (i+1);
}), //replace with actual data
 idx = 0, //current index
 display = document.getElementById('display'), //where to show
 total = fakeAds.length; //total number of ads

function show() { //actually show ad at current idx.
 display.innerHTML = fakeAds[idx]; 
}

document.getElementById('back').addEventListener('click', function(){
 --idx < 0 && (idx = total - 1); //decrement index and show
 show();
});

document.getElementById('forward').addEventListener('click', function(){
 idx = ++idx%total; //increment index and show
 show();
});

show(); //do show starting index.

licensed under cc by-sa 3.0 with attribution.