Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> принять и распечатать массив в селект 
:(
    Опции темы
Samotnik
Дата 6.2.2008, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



Добрый день
Пишу на аяксе,  вот функция которая принимает, то что пришло с сервера ввиде  XML   я  циклом  считываю все данные пришедшие
Код

function updatePage() {
        if (request.readyState == 4) {
            if (request.status == 200) {
                var xmlObject = request.responseXML;
                a = xmlObject;
                var elements = xmlObject.getElementsByTagName("path2");
                for (var x = 0; x < elements.length; x++) {
                    alert(elements[x].childNodes[0].nodeValue);
                }
            } else
                alert("WARNING  status is " + request.status);
        }
    }

и  в окошечко (alert все выводится  норм)   Но мне нужно все эти полученные данные  вывести в  выпадающий список (select)  
делаю вот так
Код

//......
document.getElementById("path2").innerHTML=elements[x].childNodes[0].nodeValue;
//.....

где  path2 - это  айдишник   селекта....    но к сожалению в таком выводе, выводится только последнее значение. (т.е.  если пришло 5  значений, то в списке  будет только последнее)
Помогите плз, реализовать вывод в  селект!!!
 smile 
PM MAIL   Вверх
Samotnik
Дата 6.2.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



Вобщем сделал!!  
надобыло  +=   поставить, а  не просто =
Код

document.getElementById("path2").innerHTML+=elements[x].childNodes[0].nodeValue;

вместо
Код

document.getElementById("path2").innerHTML=elements[x].childNodes[0].nodeValue;

Но все равно не клево!!  т.к.  в  селекте (выпадающем списке) все данные которые пришли распологаются  друг за дружком!  smile   А мне нужно, чтобы каждое новое название начиналось с новой строки 
 smile 
Т.е.  мне нужно сформировать  нормальный, обычный  вылетающий список, где каждое новое значение с новой строки!!   А не все  в одной   smile 

Это сообщение отредактировал(а) Samotnik - 6.2.2008, 20:52
PM MAIL   Вверх
Samotnik
Дата 6.2.2008, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



Да,  забыл указать, сам вывод происходит тут
Код

<select name="path2" onchange="getFileName();">
        <option/>
        <option id="path2"></option>
    </select>

PM MAIL   Вверх
Ghirik
Дата 6.2.2008, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Я с AJAx-ом не работаю, но помню, что о бычно, полученный ответ сервера обрабатывают чем то типа split. Делят строку на подстроки. И уже из полученного массива, прописывают построчно в селект.
Если уж не получится, потом уточню. или кто вперед подскажет...


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Samotnik
Дата 6.2.2008, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



написал
Код

 var xmlObject = request.responseXML.split();

ошибка 
Цитата

request.responseXML.split is not a function
var xmlObject = request.responseXML.split();

PM MAIL   Вверх
Ghirik
Дата 6.2.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Ну обычно так записывают:
Код

var RESPONSE = response.split(":"); // ":" - разделитель по которому происходит деление на подстроки.



--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
Sardar
Дата 6.2.2008, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Используй optgroup для группировки опций. Естественно в группу положить нужно <option'ы>, а не текст.

Добавлено через 1 минуту и 7 секунд
Ghirik, он уже достал инфу как правильно, в XML документе. Не надо прививать .responseText, это криво и в будущем не удобно.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Ghirik
Дата 6.2.2008, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 919
Регистрация: 26.3.2007

Репутация: 13
Всего: 20



Цитата

Используй optgroup для группировки опций. Естественно в группу положить нужно <option'ы>, а не текст.

Ghirik, он уже достал инфу как правильно, в XML документе. Не надо прививать .responseText, это криво и в будущем не удобно


Понятно... Я предупреждал, что не знаю...  smile просто хотел хоть что то предложить сделать, пока ни кто не отвечает...


--------------------
Отдадим всё клиенту, пускай его машина мучается...

PM MAIL   Вверх
smartov
Дата 7.2.2008, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Samotnik, 
а ты вместо
Цитата(Samotnik @  6.2.2008,  19:13 Найти цитируемый пост)
document.getElementById("path2").innerHTML=elements[x].childNodes[0].nodeValue;

попробуй
Код

//перед циклом
var my_select = document.getElementById("path2");
my_select.options.length=0

...
//в цикле
my_select.options[my_select.options.length] = new Option(elements[x].childNodes[0].nodeValue, elements[x].childNodes[0].nodeValue);
...

PM MAIL   Вверх
Samotnik
Дата 7.2.2008, 17:58 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



Цитата(Sardar @  6.2.2008,  22:44 Найти цитируемый пост)
Используй optgroup для группировки опций. Естественно в группу положить нужно <option'ы>, а не текст.

сделал,  никак не помогло!   :'((((
Код

<select name="path2" onchange="getFileName();">
        <otgroup label="PREVED!!!">
            <option/>
            <option id="path2"></option>
        </otgroup>
    </select>


smartov,   пасибо, но не работает!   У меня  же  xml  принимается,  значит  document.getElementById("path2");   не подойдет   smile   
 smile 
Подскажите, что не так!!  Ведь все просто!!!!!
В этой сторчке все элементы  накручиваются на одно значение, 
Код

document.getElementById("path2").innerHTML+=elements[x].childNodes[0].nodeValue;

т.е.  если его тупо выводить (что  я  иделаю)  то естественно  будут  все  значения  в строчке одной и не будет "нормального" селекта !!
Может есть способ подругому принять??   или есть  все же способ разделить эти данные и вывести  их в селект !!  Помогите  плз !!
 smile 
PM MAIL   Вверх
Sardar
Дата 7.2.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Samotnik, на пальцах:
  • select - список опций, возможно сгруппированных через optgroup
  • optgroup - группирует список опций, разделяет на секции
  • option - одна опция, т.е. один выбор из селекта
  • document.getElementById("path2") - согласно твоей вёрстке это одна опция. перечитывать до просветления.
  • document.getElementById("path2").innerHTML - содержимое опции, манипулируемое через DOM (ну почти). Одной опции.

Ты хочешь создать несколько опций. Способов масса, лучше встроенным API как показал smartov. Т.е. берём список (не опцию!) и добавляем в .options необходимые опции. Если не ясно, перечитай пост снова. Если не ясно как, перечитай пост от smartov. Задача на 3 минуты.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Samotnik
Дата 7.2.2008, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



блин я ступил!!!!!  Ваще не рреально,   я же все выводил в  один  селект, от того и был такой  глюк !!
нужно было селекты в цикл поставить
Код

for (var x = 0; x < elements.length; x++) {
                    selectPath.innerHTML += "<option id='path2'>"+elements[x].childNodes[0].nodeValue+"</option>";
                }

Вопрос закрыт
PM MAIL   Вверх
smartov
Дата 7.2.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Samotnik, 
Цитата(Samotnik @  6.2.2008,  19:13 Найти цитируемый пост)
где path2 - это айдишник селекта.... 


Цитата(Samotnik @  7.2.2008,  16:58 Найти цитируемый пост)
У меня же xml принимается, значит document.getElementById("path2"); не подойдет


Кто-то один из нас явно ошибается. Учитывая то, что "path2 - это  айдишник   селекта...." то document.getElementById("path2") будет работать нормально.


Цитата(Samotnik @  7.2.2008,  17:20 Найти цитируемый пост)
selectPath.innerHTML

Я тебе написал то же самое, но по-нормальному, а не через innerHTML.

Код

selectPath.options.length = 0;

for (var x = 0; x < elements.length; x++) {
    selectPath.options[selectPath.options.length] = new Option(elements[x].childNodes[0].nodeValue, '');
}



M
Sardar
Аккуратней с выражениями


Это сообщение отредактировал(а) Sardar - 7.2.2008, 19:12
PM MAIL   Вверх
Samotnik
Дата 7.2.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 3
Всего: 191



smartov,  просто  я  юзал  path2  как  id  и как  параметр, который передается  smile  поэтому вышла путаница    smile 
Но все равно спасибо за помощь!!!

Пэ.Эс.
Кста...  еще вопорсик,...   раз  уш  я  принял  xml  значит и работать с ним нужно с помощью  DOM   т.е.   innerHTML  не оч подходит, поэтому, как можно   заменить  innerHTML  на  работу  с Elements    через   createchild()   вроде как то  можно ...
Код

function updatePage() {
        if (request.readyState == 4) {
            if (request.status == 200) {
                var xmlObject = request.responseXML;
                var elements = xmlObject.getElementsByTagName("path2");
                var selectPath = document.getElementById("selectPath");
                for (var x = 0; x < elements.length; x++) {
                    selectPath.innerHTML += "<option id='path2'>" + elements[x].childNodes[0].nodeValue + "</option>";
                }
            } else
                alert("WARNING  status is " + request.status);
        }
    }

как тут  можно заменить    innerHTML   на  работу  с  Elements  ??
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1027 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.