Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > обход дерева XML


Автор: DimaSiK 24.10.2007, 13:05
Как мне выделить арибуты из вот такого вот XML дерева?
Код

 <root>
  <answer name="user_name" answer="N" /> 
  </root>

Делаю вот так:
Код

xmlRoot        =    response.documentElement;    
Answer        =    xmlRoot.getElementsByTagName('answer');

потом хочу получить значение арибута через
Код

AnswerAt=    Answer.getAttribute('answer');

и нифига=(((, в чем дело?? Подскажите, где можно почитать?

Автор: pompei 24.10.2007, 13:12
Answer - это массив.

Автор: dstorm81 24.10.2007, 14:17
<root>
<answer name="user_name" answer="N" /> 
</root>
джаваскрипт
xmlRoot=response.documentElement;
AnswerAt=xmlRoot.getElementsByTagName('answer')[0].getAttribute('answer');

Автор: cruelangel 24.10.2007, 19:51
юзай xpath лучше

Автор: DimaSiK 25.10.2007, 13:48
Цитата(dstorm81 @ 24.10.2007,  14:17)
<root>
<answer name="user_name" answer="N" /> 
</root>
джаваскрипт
xmlRoot=response.documentElement;
AnswerAt=xmlRoot.getElementsByTagName('answer')[0].getAttribute('answer');

в Опере работает, а в ИЕ нет?

Автор: DimaSiK 25.10.2007, 15:05
вот этот фрагмент работает в Опере, но не работает в ИЕ?
Код

    var xmlRoot =   response.documentElement;
    var Names   =   xmlRoot.getElementsByTagName('answer');
    alert('Length'+ Names.length);

В опере вижу 1, а в ИЕ вижу мат - ошибку.

Автор: Starikan 25.10.2007, 15:43
Используй следующий код:
Код

<script type="text/javascript">
<!--
function link_to_post(pid)
{
temp = prompt( "Копирование прямой ссылки этой темы, для сохранения ссылки в буфере обмена Вашего компьютера", "http://forum.vingrad.ru"+"/index.php?showtopic=178633&view=findpost&p=" + pid );
return false;
}
function PopUp(url, name, width,height,center,resize,scroll,posleft,postop) {
if (posleft != 0) { x = posleft }
if (postop  != 0) { y = postop  }
if (!scroll) { scroll = 1 }
if (!resize) { resize = 1 }
if ((parseInt (navigator.appVersion)>= 4 ) && (center)) {
X = (screen.width  - width ) / 2;
Y = (screen.height - height) / 2;
}
if (scroll != 0) { scroll = 1 }
var Win = window.open( url, name, 'width='+width+',height='+height+',top='+Y+',left='+X+',resizable='+resize+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no');
}
function ShowHide(id1, id2) {
if (id1 != '') expMenu(id1);
if (id2 != '') expMenu(id2);
}
function expMenu(id) {
var itm = null;
if (document.getElementById) {
itm = document.getElementById(id);
} else if (document.all){
itm = document.all[id];
} else if (document.layers){
itm = document.layers[id];
}
if (!itm) {
// do nothing
}
else if (itm.style) {
if (itm.style.display == "none") { itm.style.display = ""; }
else { itm.style.display = "none"; }
}
else { itm.visibility = "show"; }
}
//-->
</script>


У меня вродибы всё работает с этим кодом

Автор: DimaSiK 26.10.2007, 15:35
Все, проблему решил. Дело в том, что XML мне отдавал PHP скрипт и я забыл, вернее не думал, что это важно и не написал строчу 
Код

Header('Content-type text/xml');

, но Opera на это не ругалась и распозновала отлично то, что ей высылают, а все остальные браузеры отказались понимать, что им тыкают XML файл. Вот и вся проблемма. Всем спасбо за помощь.

Добавлено через 4 минуты и 42 секунды
Цитата(Starikan @ 25.10.2007,  15:43)
Используй следующий код:
Код

<script type="text/javascript">
<!--
function link_to_post(pid)
{
temp = prompt( "Копирование прямой ссылки этой темы, для сохранения ссылки в буфере обмена Вашего компьютера", "http://forum.vingrad.ru"+"/index.php?showtopic=178633&view=findpost&p=" + pid );
return false;
}
function PopUp(url, name, width,height,center,resize,scroll,posleft,postop) {
if (posleft != 0) { x = posleft }
if (postop  != 0) { y = postop  }
if (!scroll) { scroll = 1 }
if (!resize) { resize = 1 }
if ((parseInt (navigator.appVersion)>= 4 ) && (center)) {
X = (screen.width  - width ) / 2;
Y = (screen.height - height) / 2;
}
if (scroll != 0) { scroll = 1 }
var Win = window.open( url, name, 'width='+width+',height='+height+',top='+Y+',left='+X+',resizable='+resize+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no');
}
function ShowHide(id1, id2) {
if (id1 != '') expMenu(id1);
if (id2 != '') expMenu(id2);
}
function expMenu(id) {
var itm = null;
if (document.getElementById) {
itm = document.getElementById(id);
} else if (document.all){
itm = document.all[id];
} else if (document.layers){
itm = document.layers[id];
}
if (!itm) {
// do nothing
}
else if (itm.style) {
if (itm.style.display == "none") { itm.style.display = ""; }
else { itm.style.display = "none"; }
}
else { itm.visibility = "show"; }
}
//-->
</script>


У меня вродибы всё работает с этим кодом

Родной, что у тебя работает? Минус еще один захотел. Нафиг тупняк писать!!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)