Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Проблема с двумерным массивом (http://www.flasher.ru/forum/showthread.php?t=116290)

bulya123 25.09.2008 14:31

Проблема с двумерным массивом
 
Добрый день, совсем запутался, возникла проблема с двумерным массивом
Код:

var filename_list = new Array();
var filepath:String = "portfolio/spec/";

var content_xml = new XML();
content_xml.ignoreWhite = true;
content_xml.onLoad = function() {
        var node:Array = this.firstChild.childNodes;
        for (var i = 0; i<node.length; i++) {
                var nodes:Array = this.firstChild.childNodes[i].childNodes;
               
                for (var j = 0; j<nodes.length; j++) {
                       
                        filename_list[i, j] = nodes[j].attributes.filename;
                        trace(filename_list[i, j])//здесь выводит все нормально

                }
        }
        trace(filename_list)//а здесь выводить только последние значения
};
content_xml.load("specproject.xml");

Структура XML приблизительно такая:
Код:

<?xml version="1.0"  encoding="windows-1251"?>
<portfolio>
<items label="TORQUE">
<item filename="port01.png" />
<item filename="port02.png" />
<item filename="port03.png" />
</items>
<items label="GRAND PRIX">
<item filename="port04.png" />
<item filename="port05.png" />
<item filename="port06.png" />
</items>
<items label="ЕВРОФАРМ">
<item filename="port07.png" />
<item filename="port08.png" />
<item filename="port09.png" />
<item filename="port09.png" />
</items>
</portfolio>

Не могу понять в чем дело:confused:
Буду благодарен за помощь:)

Doctor76 25.09.2008 14:46

Я вместо этой строки
Код:

filename_list[i, j] = nodes[j].attributes.filename;
Написал так:
Код:

filename_list.push(nodes[j].attributes.filename)
Работает вроде как..

dimarik 25.09.2008 15:02

Код:

filename_list[i][j] = nodes[j].attributes.filename;

bulya123 30.09.2008 12:17

Цитата:

Сообщение от dimarik (Сообщение 766322)
Код:

filename_list[i][j] = nodes[j].attributes.filename;

Спасибо, то, что нужно, просто синтаксис перепутал:p

Цитата:

Сообщение от Doctor76 (Сообщение 766317)
Я вместо этой строки
Код:

filename_list[i, j] = nodes[j].attributes.filename;
Написал так:
Код:

filename_list.push(nodes[j].attributes.filename)
Работает вроде как..

Нужен именно двумерный массив, а метод push делает одномерный прикрепляя в конец массива

iNils 30.09.2008 12:40

bulya123, мультипостинг у нас запрещен, пользуйтесь кнопкой "мультицитата" и "изменить"

nOobCrafter 14.11.2008 15:06

А если мне надо так же вывести "nodes.length", то что делать?..а то берется только последнее значение((

Код AS1/AS2:

var filename_list = new Array();
var filepath:String = "";
 
var content_xml = new XML();
content_xml.ignoreWhite = true;
content_xml.onLoad = function()
{
        var node:Array = this.firstChild.childNodes;
        for (var i = 0; i<node.length; i++)
        {
                filename_list[i] = new Array();
                var nodes:Array = this.firstChild.childNodes[i].childNodes;
 
                for (var j = 0; j<nodes.length; j++)
                {
                        filename_list[i][j] = nodes[j].attributes.filename;
                }
                trace("то как должно быть - " + nodes.length)  // все ок  =3, =4, =4
        }
        trace("то что получаем(( - " + nodes.length)  // последнее значение = 4
};
 
content_xml.load("specproject.xml");


MrXoT 14.11.2008 15:59

Код:

var filename_list = new Array();
var filepath:String = "portfolio/spec/";

var content_xml = new XML();
content_xml.ignoreWhite = true;
content_xml.onLoad = function(success:Boolean) {
    if(success){
        var node:Array = this.firstChild.childNodes;
        for (var i = 0; i<node.length; i++) {
                var nodes:Array = this.firstChild.childNodes[i].childNodes;
                var nodes_length:Number = this.firstChild.childNodes[i].childNodes.length;
                filename_list[i] = new Object();
                filename_list[i]._length=nodes_length;
                for (var j = 0; j<nodes.length; j++) {

                        var filename:String = nodes[j].attributes.filename;
                        filename_list[i][j] = new Object();
                        filename_list[i][j]._filename=filename;

                }
        }
        trace(filename_list[1][0]._filename)
    }
};
content_xml.load("specproject.xml");


nOobCrafter 14.11.2008 16:54

2 MrXoT Ммм и что это нам дало?... Мне надо кол-во елементов. Немного подправил верхний пост, что бы было понятно что именно мне надо.

MrXoT 14.11.2008 17:36

все очень просто...
Задаем массив как обьект...
и к нему можно легко общаться...
очень удобно если 1 поле в хмл имеет много параметров...
например если человек добавит новое поле title="" то твой вариант не получится
а мой просто при добавлении поля filename_list[i][j]._title = title;
и все....

nOobCrafter 14.11.2008 17:53

Ммм у нас небольшое недопонимаение.
Мне НЕ надо узнавать что и где находится, с этим у меня все ок. Мне надо узнать КОЛ-ВО элементов ВТОРОГО массива, для каждого элемента первого отдельно. А у меня выводит только кол-во елементов последнего массива (i = 2). (в коде старался это отразить.)

З.Ы.
Цитата:

например если человек добавит новое поле title="" то твой вариант не получится
я использую 3 параметра и все у меня корректно отображается.(могу хоть 10, не в том суть)
Код:

<?xml version="1.0" encoding="utf-8" ?>
<header>
<items razdel="Безопасность">
                <item title="1.1"
                        description="Сегодня запущен сайт в тестовом режиме."
                        image="thumbnails/Cotton_Buds.jpg" />



Часовой пояс GMT +4, время: 21:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.