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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как через appendChild правельно распечатоть эле... 
:(
    Опции темы
Mushu
Дата 25.6.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: -5



Как через appendChild правильно распечатать элементы. Я их делаю в цикле, как реализовать чтоб они накапливались в массиве а потом их всех разом (точнее) через цикол распечатоть в  html
Код


html>
<body>
<form>
<div id="podst"></div>

<script>




var q = new Array();
    
    
            q[0] = new Object();
            q[0].name_teg = "select";
            q[0].id = 2;
            q[0].name = "Imya";
            q[0].text = "!!!!!";
            
            
            q[1] = new Object();
            q[1].name_teg = "option";
            q[1].value = 1;
            q[1].text = "Imya-1";
            
            q[2] = new Object();
            q[2].name_teg = "option";
            q[2].value = 1;
            q[2].text = "Imya-2";


                        q[3] = new Object();
            q[3].name_teg = "select";
            q[3].id = 2;
            q[3].name = "Imya";
            q[3].text = "!!!!!";
            
            
            q[4] = new Object();
            q[4].name_teg = "option";
            q[4].value = 1;
            q[4].text = "Imya-1";
            
            q[5] = new Object();
            q[5].name_teg = "option";
            q[5].value = 1;
            q[5].text = "Imya-2";
                         
                       

                    
            
        var mas_element = new Array();    
        for(var i=0; i<q.length; i++)
        {    
        if (q[i].name_teg == "select")
            {
                mas_element[i] =document.createElement("SELECT");
                mas_element[i].name = q[i].name_teg;
                mas_element[i].id = q[i].id;
                mas_element[i].classes = q[i].classes;
                mas_element[i].value = q[i].value
                mas_element[i].text  =q[i].text;
                document.getElementById("podst").appendChild(element_select); //?????????????????
            }
        
        if (q[i].name_teg == "option")
            {
                var months =document.createElement("OPTION");
                months.name = q[i].name_teg;
                months.id = q[i].id;
                months.classes = q[i].classes;
                months.value = q[i].value
                months.text  =q[i].text;
                document.getElementById("podst").appendChild(months); //???????
            }
            
            
        
        }

alert(document.getElementById('podst').innerHTML);
</script>
</form>
</body>
</html>

PM MAIL   Вверх
ksnk
Дата 25.6.2007, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Открою несколько страшных секретов!
  • Записи 
    Код

    var q = new Array();
               q[0] = new Object();
                q[0].name_teg = "select";
                q[0].id = 2;
                q[0].name = "Imya";
                q[0].text = "!!!!!";
                
                
                q[1] = new Object();
                q[1].name_teg = "option";
                q[1].value = 1;
                q[1].text = "Imya-1";
    ...

    и 
    Код

    var q=[{name_teg:'select',id:2,name:'Imya',text:'!!!'},
                {name_teg:'option',value:1,text:'Imya-1'},
    ...
              ]
     порождают АБСОЛЮТНО одинаковые структуры данных. А вторая еще короче и быстрее.
  •  элемент option должен вставляться в элемент select
Итого код может выглядеть, к примеру так
Код

... // определение q
        var select = null;    
        for(var i=0; i<q.length; i++)
        {    
        switch(q[i].name_teg){
        case 'select':
                var e=document.createElement("SELECT");
                e.name = q[i].name_teg;
                e.id = q[i].id;
                e.classes = q[i].classes;
                e.value = q[i].value
                e.text  =q[i].text;
                select=document.getElementById("podst").appendChild(e); //?????????????????
                break;        
        
        case"option":
                var e =document.createElement("OPTION");
                e.name = q[i].name_teg;
                e.id = q[i].id;
                e.classes = q[i].classes;
                e.value = q[i].value
                e.text  =q[i].text;
                if(select)select.appendChild(months); //???????
                break;
       }}

Зачем нужен mas_element, осталось для меня не понятно...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
dstorm81
Дата 25.6.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

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



вижу знакомые куски кода...
расскажи что сделать хочешь, мож что готовое посоветуем


--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
Mushu
Дата 25.6.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: -5



угу мне приходит массив в джавускрипт готовых элементов с со значеними(атрибутами) и я хочу реализовать на джавескрипте парссер который парсил все это в html вот

Добавлено через 2 минуты и 8 секунд
Цитата(ksnk @ 25.6.2007,  15:37)
Открою несколько страшных секретов!


  • Записи 
    Код

    var q = new Array();
               q[0] = new Object();
                q[0].name_teg = "select";
                q[0].id = 2;
                q[0].name = "Imya";
                q[0].text = "!!!!!";
                
                
                q[1] = new Object();
                q[1].name_teg = "option";
                q[1].value = 1;
                q[1].text = "Imya-1";
    ...

    и 
    Код

    var q=[{name_teg:'select',id:2,name:'Imya',text:'!!!'},
                {name_teg:'option',value:1,text:'Imya-1'},
    ...
              ]
     порождают АБСОЛЮТНО одинаковые структуры данных. А вторая еще короче и быстрее.

  •  элемент option должен вставляться в элемент select

Итого код может выглядеть, к примеру так
Код

... // определение q
        var select = null;    
        for(var i=0; i<q.length; i++)
        {    
        switch(q[i].name_teg){
        case 'select':
                var e=document.createElement("SELECT");
                e.name = q[i].name_teg;
                e.id = q[i].id;
                e.classes = q[i].classes;
                e.value = q[i].value
                e.text  =q[i].text;
                select=document.getElementById("podst").appendChild(e); //?????????????????
                break;        
        
        case"option":
                var e =document.createElement("OPTION");
                e.name = q[i].name_teg;
                e.id = q[i].id;
                e.classes = q[i].classes;
                e.value = q[i].value
                e.text  =q[i].text;
                if(select)select.appendChild(months); //???????
                break;
       }}

Зачем нужен mas_element, осталось для меня не понятно...

А как вложить OPTION в SELECT..?

Добавлено через 8 минут и 2 секунды
Точнее q[2] не входит в Select

Код

var q = new Array();
    
    
            q[0] = new Object();
            q[0].name_teg = "select";
            q[0].id = 2;
            q[0].name = "Imya";
            q[0].text = "!!!!!";
            
            
            q[1] = new Object();
            q[1].name_teg = "option";
            q[1].value = 1;
            q[1].text = "Imya-1";
            
            q[2] = new Object();
            q[2].name_teg = "option";
            q[2].value = 1;
            q[2].text = "Imya-2";
                    

   var select = null;    
        for(var i=0; i<q.length; i++)
        {    
        switch(q[i].name_teg){
        case 'select':
                var e=document.createElement("SELECT");
                e.name = q[i].name_teg;
                e.id = q[i].id;
                e.classes = q[i].classes;
                e.value = q[i].value
                e.text  =q[i].text;
                select=document.getElementById("podst").appendChild(e); //?????????????????
                break;        
        
        case"option":
                var e =document.createElement("OPTION");
                e.name = q[i].name_teg;
                e.id = q[i].id;
                e.classes = q[i].classes;
                e.value = q[i].value
                e.text  =q[i].text;
                if(select)select.appendChild(e); //???????
                break;
       }}
        
document.getElementById("podst").appendChild(e);
alert(document.getElementById('podst').innerHTML);


PM MAIL   Вверх
ksnk
Дата 25.6.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Нужно выкинуть предпоследнюю строчку:
document.getElementById("podst").appendChild(e);



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Alx
Дата 26.6.2007, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

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





--------------------
PM MAIL WWW ICQ   Вверх
Mushu
Дата 26.6.2007, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: -5



Цитата(Alx @ 26.6.2007,  00:14)
к теме

Спасибо за сылку изучим для расширения кругозора, а  в моей задаче я нааборот ушол от хмл (в сторону меньшего обьема передачи данных) и библиотеку для аджакса использую JsHttpRequest

Добавлено @ 08:29
У меня в IE не работает выше преведенный пример в чем проблема..? Создаеться тока селект без списка.. :(
 
Код


<html>
<body>
<form>
<div id="podst"></div>

<script>
var q = new Array();
    
    
            q[0] = new Object();
            q[0].name_teg = "select";
            q[0].id = 2;
            q[0].name = "Imya";
            q[0].text = "!!!!!";
            
            
            q[1] = new Object();
            q[1].name_teg = "option";
            q[1].value = 1;
            q[1].text = "Imya-1";
            
            q[2] = new Object();
            q[2].name_teg = "option";
            q[2].value = 1;
            q[2].text = "Imya-2";
            
            
            

   var select = null;    
        for(var i=0; i<q.length; i++)
        {    
        switch(q[i].name_teg){
        case 'select':
                var e=document.createElement("SELECT");
                e.name = q[i].name_teg;
                e.id = q[i].id;
                e.classes = q[i].classes;
                e.value = q[i].value
                e.text  =q[i].text;
                select=document.getElementById("podst").appendChild(e); //?????????????????
                break;        
        
        case'option':
                var e =document.createElement("OPTION");
                e.name = q[i].name_teg;
                e.id = q[i].id;
                e.classes = q[i].classes;
                e.value = q[i].value
                e.text  =q[i].text;
                if(select)select.appendChild(e); //???????
                break;
       }}
        

alert(document.getElementById('podst').innerHTML);










</script>
</form>
</body>
</html>


Это сообщение отредактировал(а) Mushu - 26.6.2007, 08:42
PM MAIL   Вверх
ksnk
Дата 26.6.2007, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Можно переписать кусок кода вот так.
Код

                var e =document.createElement("OPTION");
                e.name = q[i].name_teg;
                e.id = q[i].id;
                e.classes = q[i].classes;
                e.value = q[i].value
                e.text  =q[i].text; 
                if(select)           
                try {e=select.add(e, null) } //standards compliant; doesn't work in IE
                catch(ex) {
                   e=select.add(e,select.options.length); // IE only
               }
               e=null
                break;

Еще следует знать, что атрибут, задающий имя класса называется className, а не classes , атрибута text нет у select'а и вообще, почитать документацию не мешает...

Это сообщение отредактировал(а) ksnk - 26.6.2007, 09:46


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Mushu
Дата 26.6.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: -5



знаю я (учусь) эксперементировал, такой подход мне не подходит, скажите тогда как мне организовать контейнер, куда можно будет складывать все элементы а потом его распечатать?
 

Это сообщение отредактировал(а) Mushu - 26.6.2007, 09:55
PM MAIL   Вверх
Alx
Дата 26.6.2007, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

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



Цитата(Mushu @  26.6.2007,  08:21 Найти цитируемый пост)
а  в моей задаче я нааборот ушол от хмл (в сторону меньшего обьема передачи данных)

наряду с XML там поддерживается и JSON-передача данных в AJAX-запросах, т.е. возможный объем передаваемых данных сведен до минимума. Вы также можете подгружать/генерировать эти данные как Вам удобно, самостоятельно или с помощью встроенных функций loadOptions_*, а потом просто передавать их в функцию 
Код

id_списка.appendOptions(JSON-строка)

всё остальное программа сделает за вас - проще некуда.. ;)

http://alx.vingrad.ru/fwc/ru/smartselect#doc-ajax - чуть подробнее
http://alx.vingrad.ru/fwc/smartselect/offs...les/sselect.php - примеры с JSON и XML подгрузкой

Это сообщение отредактировал(а) Alx - 26.6.2007, 10:47


--------------------
PM MAIL WWW ICQ   Вверх
Mushu
Дата 27.6.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: нет
Всего: -5



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


 




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


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

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