Я работаю над веб-приложением, которое содержит «divs», которые я использую для кнопок с кнопками. В настоящее время мой код вызывает функцию handleClick для каждой кнопки «div», которая должна обрабатываться. Я хотел бы проанализировать XML-документ, чтобы получить необходимые для моей функции handleClick. Я попытался реализовать решения из этой темы: Parsing XML with Javascript and create array, но мне не повезло. Я также пытался использовать эту информацию: http://www.w3schools.com/xml/dom_intro.asp, но я смущен тем, что действительно необходимо. Код w3schools использует функцию XMLHttpRequest, но код stackoverflow этого не делает. Вот то, что я до сих пор:Javascript - проанализировать XML-документ для создания массива
//Change background image when Login button clicked.
handleClick("#btnLogin", "SideMenu.png", "LoginButton", "SideMenuButton");
function handleClick (inputButton, inputImage, inputIndexOFF, inputIndexON) {
$(inputButton).click(function() {
$("body").css("background-image", "url(" + inputImage + ")");
//This is how I remove the highlight from the buttons.
zIndexON(inputIndexON);
//This is how I apply the highlight to buttons.
zIndexOFF(inputIndexOFF);
});
}
function zIndexOFF (inputClass) {
var x = document.getElementsByClassName(inputClass);
for (i = 0; i < x.length; i++) {
x[i].style.zIndex = "-1"
}
}
function zIndexON (inputClass) {
var x = document.getElementsByClassName(inputClass);
for (i = 0; i < x.length; i++) {
x[i].style.zIndex = "1"
}
}
//XML
<buttons>
<button>
<inputButton>#btnLogin</inputButton>
<inputImage>SideMenu.png</inputImage>
<inputIndexOFF>LoginButton</inputIndexOFF>
<inputIndexON>SideMenuButton</inputIndexON>
</button>
</buttons>
Моя первоначальная идея состояла в том, чтобы создать функцию, чтобы загрузить XML-документ за информацию со страницы w3schools, а затем использовать цикл для разбора элементов XML, и создать массив содержащий необходимые входы для функции handleClick, затем прокрутите массив, чтобы вызвать функцию handleClick для обработки всех кликов, а не повторять один и тот же вызов handleClick для каждой кнопки. Если есть более простой способ, я все уши.
EDIT: Я создал функцию handleClicks, пытающуюся реализовать поток из поста, связанного выше. Я также редактировал свой XML-документ, чтобы он напоминал XML из того же потока.
function handleClicks() {
//Get all buttons from XML
var btns = jQuery(buttons).find("button");
//Get input fields for each button in XML
for (var i = 0; i < btns.length; i++) {
var ret = [];
var tot = [];
ret[0] = jQuery(btns[i]).find('inputButton').text();
ret[1] = jQuery(btns[i]).find('inputImage').text();
ret[2] = jQuery(btns[i]).find('inputIndexOFF').text();
ret[3] = jQuery(btns[i]).find('inputIndexON').text();
tot.push(ret);
}
//Call handleClick function for each button from XML doc, and pass in inputs to handleClick function
for (var j = 0; j < button.length; i++) {
handleClick(tot[0].text, tot[1].text, tot[2].text, tot[3].text);
}
}
Кнопки еще выделить на парении, но ничего не происходит, когда я нажимаю.
Как выглядит этот код XML? Включает ли он действия, которые необходимо предпринять при нажатии кнопки? Также я не понимаю, почему у вас возникли бы проблемы с анализом XML. Первая ссылка, которую вы указали, объясняет, как это сделать с помощью jquery. – SpiderPig
XML фактически находится в нижней части фрагмента кода. Узлы в XML-документе для каждого элемента