Выбор данных из XML помогите плз
Не понимаю как индексируются данные в XML - отсюда не знаю как вызвать только тот элемент, который мне нужен для вставки в HTML по клику!?
вот.....index.html <!DOCTYPE html> <html> <head> <meta content="text/html" charset="utf-8"> <title>portfolio</title> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/script.js"></script> <link rel="stylesheet" href="css/index.css" type="text/css"> </head> <body> <table class="master"> <tr> <td> <center id="logo"> </center> </td> </tr> <tr> <td> <center id="menu"> </center> </td> </tr> <tr> <td id="view"> </td> </tr> </table> </body> </html> вот...base.xml <?xml version='1.0' encoding='utf-8'?> <container> <logo> <title>Portfolio</title> </logo> <site> <menu>Page1</menu> <url>page1.html</url> </site> <site> <menu>Page2</menu> <url>page2.html</url> </site> <site> <menu>Page3</menu> <url>page3.html</url> </site> </container> вот...index.css
*{
padding: 0;
margin: 0;
}
body {
background: url('../img/free4.jpg') no-repeat center center fixed;
background-size: cover;
}
.master{
width: 1000px;
position: relative;
margin:0 auto;
padding-top: 20px;
padding-bottom: 20px;
}
.menu{
padding: 8px;
font-family: Georgia;
font-style: italic;
text-decoration: underline;
font-size: 28pt;
color: #fff;
cursor: pointer;
}
.menu:hover{
text-decoration: none;
}
.mactive {
text-decoration: none;
}
.view{
width: 1000px;
border: 0px solid #fff;
border-radius: 10px;
background: url('../img/bg2.png') repeat;
}
.logo{
font-family: Georgia;
font-size: 60px;
color: #fff;
position: relative;
bottom: 0px;
}
вот....sсript.js
$(document).ready(function(){
$.ajax({
type: 'GET',
url: 'base.xml',
dataType: 'xml',
success: function(xml){
$(xml).find('container logo').each(function(){
var logo = $(this).find('title').text();
$('<l class="logo"></l>').html(logo).appendTo('#logo');
$(xml).find('site').each(function(){
var menus = $(this).find('menu').text();
var pages = $(this).find('url').text();
$('<m class="menu"></m>').html(menus).appendTo('#menu');
$('<div class="view"></div)').load(pages).appendTo('#view');
var buttons = $('.menu');
var i = buttons.index(this);
buttons.click(function(){
buttons.removeClass('mactive'),
$(this).addClass('mactive');
});
});
});
},
error: function(){alert("ERROR not found XML file");}
});
});
сам скрипт еще не доделан, потому что остановился на индексации данных, а вот притаком раскладе скрипта, мне выдает все мои страницы и погружает в index.html.....а я хочу чтоб в начале грузилась только Page1.html, а остальные - по клику....но даже не могу вывести Page1.html.....прописывал .eq(0), начинает глючить сильно.....помогите плз! может не правильный XML??? |
В порядок код js приведи сначала и лучше дай онлайн демо.
Что там за var i? где она используется? Почему у тебя buttons.click навешивается в цикле? Что значит "глючить сильно"? Нафиг тебе вобще xml? С json ведь попроще работать. |
спасибо за быстрый ответ! дело в том что я и не знал про json....
вот попытался создать json и наткнулся на ту же проблему, не могу вызвать только те данные которые мне нужны.....дело в том что внешний файл с данными будет менятся и вот как вызывать эти данные я не смог понять.....во всем интернете, я нашел только то, как синхронно вызвать все данные....а мне надо по пределенному клику - вызвать определенные данные...вот как то сложно мне....вся мысль в том, что HTML шаблон с простой таличной разметкой "header", "menu", "content", "footer"... а во внешнем файле хронятся то что будет загружаться в шаблон и ко всему сам content храниться в отдельных HTML файлах..... |
Цитата:
|
<!DOCTYPE html> <html> <head> <meta content="text/html" charset="utf-8"> <title>portfolio</title> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/script.js"></script> <link rel="stylesheet" href="css/index.css" type="text/css"> </head> <body> <table class="master"> <tr> <td> <center id="logo"> </center> </td> </tr> <tr> <td> <center id="menu"> </center> </td> </tr> <tr> <td id="view"> </td> </tr> </table> </body> </html> <?xml version='1.0' encoding='utf-8'?> <base> <head head="Portfolio"/> <site menu="Page1" url="page1.html"/> <site menu="Page2" url="page2.html"/> <site menu="Page3" url="page3.html"/> <foot title="copyright"/> </base>
$(document).ready(function(){
$.get('base.xml',{}, function(xml){
$(xml).find("head").each(function(){
var logo = $(this).attr("head");
$('<l class="logo">'+logo+'</l>').appendTo('#logo');
});
$(xml).find("site").each(function(){
var menu = $(this).attr("menu");
$('<m class="menu">'+menu+'</m>').appendTo('#menu');
});
$('<div class="view"></div>').load($(xml).find("site").eq(0).attr("url")).appendTo('#view');
var button = $('.menu');
button.click(function(){
var i = button.index(this);
button.removeClass('mactive');
$(this).addClass('mactive');
$('.view').fadeOut(600).queue(function() {
$('.view').stop(true, true).remove();
$('<div class="view"></div>').fadeIn(600).load(
$(xml).find("site").eq(i).attr("url"))
.appendTo('#view')
.dequeue();
});
});
});
});
исправил XML и дописал скрипт....работает так как мне надо....но не знаю на сколько грамотно...как тут читал "говнокод"....вот не знаю....мне это всё нужно для того что я учусь всего 2 месяца программированию....и очень мало чего знаю, моя метода в том, что я ставлю цель или задачу и таким способом учусь.... и к стати, при таком XML который у меня, он всё рано больше чем JSON? И что такое "индексация поисковиками"??? где почитать про это....я так догадываюсь, это то как мою страничку будет искать GOOGle и ему подобные? даже и не думал про это.... |
| Часовой пояс GMT +3, время: 09:05. |