![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2006
Сообщений: 97
|
function searchNode (myXML, nN:String){
//ищет нод по имени nN в myXML
for (var i = 0; i<myXML.childNodes.length; i++) {
if (String (myXML.childNodes[i].nodeName) != nN) {
searchNode (myXML.childNodes[i], nN);
} else {
ccc = myXML.childNodes[i];
return myXML.childNodes[i];
}
}
}
ссс - получается нормальная юзабельная ссылка, bbb получется undefined //в общем сабж |
|
|||||
|
1. в чем может быть косяк:
тип функции не указан хотя return есть 2. можно попробовать 3. может вы неуспеваете дождаться окончания загрузки ХМЛ а уже с ним что-то делаете...
__________________
"We Are The Champions My Friends!" Queen Последний раз редактировалось CorC; 23.12.2006 в 10:50. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
1. У меня это работает (xml описан в скрипте)
2. Зачем в строке if (String (myXML.childNodes[i].nodeName)... стоит приведение имени нода к String, когда имя нода и так String? И наконец главный вопрос: 3. Что будете делать, если у вас несколько нодов с именем 'atp'? Вот функция который обходит весь xml и возвращает массив нодов с заданным именем. //// ноды с именем A имеют номера id: 1,4,6,7
//// ноды с именем B имеют номера id: 2,3,5,8
var xml:XML = new XML ("<nodeA id='1'><nodeB id='2'><nodeB id='3'><nodeA id='4'></nodeA></nodeB><nodeB id='5'></nodeB><nodeA id='6'><nodeA id='7'></nodeA></nodeA></nodeB><nodeB id='8'></nodeB></nodeA>");
xml.ignoreWhite = true;
function searchNode (xml:XML, name:String, array:Array):Array {
if (arguments.length < 3) {
var array:Array = new Array ();
}
if (xml.nodeName == name) {
array.push (xml);
}
if (xml.hasChildNodes () || xml.childNodes.length != 0) {
var i:Number = 0;
while (xml.childNodes[i]) {
searchNode (xml.childNodes[i++], name, array);
}
}
return array;
}
var arrayNodeA:Array = searchNode (xml, 'nodeA');
var arrayNodeB:Array = searchNode (xml, 'nodeB');
for (var i:Number = 0; i < arrayNodeA.length; i++) {
trace (arrayNodeA[i].attributes.id);
}
trace ("");
for (var i:Number = 0; i < arrayNodeB.length; i++) {
trace (arrayNodeB[i].attributes.id);
}
|
|
|||||
|
Регистрация: Feb 2006
Сообщений: 97
|
CorC
с типом тож не хочет... iNils 1. примерно такая же функция есть и у меня. но надо "лёгкую" функцию тк вызываться она будет часто и на слабой тачке 2. это для перестраховки. 3. xml-ка самопальная, имена в ней уникальные. тоже запихаю ссылку в массив и его возвращу, пасибо ![]() Последний раз редактировалось mrspb; 23.12.2006 в 11:15. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А зачем idMap в скобках?
![]() |
|
|||||
|
Регистрация: Feb 2006
Сообщений: 97
|
весь код
des_xml = new XML ();
des_xml.ignoreWhite = true;
des_xml.load('des.des');
des_xml.onLoad = function (){
trace (true);
}
kkk = [];
this.onMouseDown = function () {
kkk = searchNode (des_xml, 'atp');
}
function searchNode (myXML:XMLNode, nN:String):Array{
//ищет нод по имени nN в myXML
for (var i = 0; i<myXML.childNodes.length; i++) {
if (String (myXML.childNodes[i].nodeName) != nN) {
searchNode (myXML.childNodes[i], nN);
} else if (String (myXML.childNodes[i].nodeName) == nN) {
trace ('i find node ' + nN);
var tmp_arr = [myXML.childNodes[i]];
return tmp_arr;
}
}
}
XML'ka такая |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
|
Цитата:
![]() Я не пользовался idMap с времен когда сидел на mx (вернее там и писать idMap не нужно было). И когда сейчас стал набирать idMap, то флеш стал ругаться. Цитата:
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Мммм, это в каком Flash такая заморочка?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:56. |
|
|
« Предыдущая тема | Следующая тема » |
|
|