Полезная информация

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№121-09-2012 09:32:32

Bujhm666
Участник
 
Группа: Members
Зарегистрирован: 18-09-2012
Сообщений: 6
UA: Firefox 15.0

Получение данных из многоколоночного listbox

Что то тишина здесь, но попробую спросить.
Вот пример заполнения listbox, взят из документации по XUL:

Выделить код

Код:

<listbox id="theList" rows="10" width="400">
  <listhead>
    <listheader label="1ct Gem" width="240"/>
    <listheader label="Price" width="150"/>
  </listhead>
  <listcols>
    <listcol/>
    <listcol flex="1"/>
  </listcols>
</listbox>

var theList = document.getElementById('theList ');
 gems = [  {gem: "Ruby", Price: "$3,500 - $4,600"},
           {gem: "Emerald", Price: "$700 - 4,250"},
           {gem: "Blue Sapphire", Price: "$3,400 - $4,500"},
           {gem: "Diamond", Price: "$5,600 - $16,000"}  ];
for (var i = 0; i < gems.length; i++)
    {
        var row = document.createElement('listitem');
        var cell = document.createElement('listcell');
        cell.setAttribute('label', gems[i].gem);
        row.appendChild(cell);

        cell = document.createElement('listcell');
        cell.setAttribute('label',  gems[i].Price );
        row.appendChild(cell);

        theList.appendChild(row);
    }

Теперь вопрос, как сделать наоборот - из листбокса получить данные исходного вида в переменную для последующего сохранения, то есть вернуть:

Выделить код

Код:

[  {gem: "Ruby", Price: "$3,500 - $4,600"},
           {gem: "Emerald", Price: "$700 - 4,250"},
           {gem: "Blue Sapphire", Price: "$3,400 - $4,500"},
           {gem: "Diamond", Price: "$5,600 - $16,000"}  ];

Отредактировано Bujhm666 (21-09-2012 09:34:02)

Отсутствует

 

№221-09-2012 09:59:14

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 15.0

Re: Получение данных из многоколоночного listbox

Какие-то проблемы с getElementsByTagName() и getAttribute()?


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№321-09-2012 10:07:10

Bujhm666
Участник
 
Группа: Members
Зарегистрирован: 18-09-2012
Сообщений: 6
UA: Firefox 15.0

Re: Получение данных из многоколоночного listbox

Не было бы проблем, не спрашивал бы. Новичек я, пока в голове каша из документации.
Получается getAttribute() вернет: {gem: "Ruby", Price: "$3,500 - $4,600"}, я правильно понял?

Отсутствует

 

№421-09-2012 11:02:06

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 15.0

Re: Получение данных из многоколоночного listbox

Так вот сразу – не вернет.
https://developer.mozilla.org/en-US/doc … sByTagName
https://developer.mozilla.org/en-US/doc … tAttribute


Выделить код

Код:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    title="Listbox example">

<listbox id="theList" rows="10" width="400">
  <listhead>
    <listheader label="1ct Gem" width="240"/>
    <listheader label="Price" width="150"/>
  </listhead>
  <listcols>
    <listcol/>
    <listcol flex="1"/>
  </listcols>
</listbox>
<script type="application/javascript">
<![CDATA[

var theList = document.getElementById('theList');
 gems = [  {gem: "Ruby", Price: "$3,500 - $4,600"},
           {gem: "Emerald", Price: "$700 - 4,250"},
           {gem: "Blue Sapphire", Price: "$3,400 - $4,500"},
           {gem: "Diamond", Price: "$5,600 - $16,000"}  ];
for (var i = 0; i < gems.length; i++)
    {
        var row = document.createElement('listitem');
        var cell = document.createElement('listcell');
        cell.setAttribute('label', gems[i].gem);
        row.appendChild(cell);

        cell = document.createElement('listcell');
        cell.setAttribute('label',  gems[i].Price );
        row.appendChild(cell);

        theList.appendChild(row);
    }

var data = Array.map(
    theList.getElementsByTagName("listitem"),
    function(row) {
        return {
            gem:   row.firstChild.getAttribute("label"),
            Price: row.lastChild.getAttribute("label")
        };
    }
);
console.dir(data);

]]>
</script>

</window>

Только для console.dir() (Инструменты – Веб-разработка – Веб-консоль) надо открывать во вкладке и разрешить XUL для локальных файлов (Remote XUL Manager).


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№521-09-2012 11:30:59

Bujhm666
Участник
 
Группа: Members
Зарегистрирован: 18-09-2012
Сообщений: 6
UA: Firefox 15.0

Re: Получение данных из многоколоночного listbox

Большое спасибо.

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]