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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не отображается таблица с $.getJson(), в дебаггере объекты вижу нормально 
:(
    Опции темы
dmitryk1
Дата 10.10.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 10.6.2008
Где: Новосибирск

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



Код

          $.getJSON("http://10.2.8.18:8088/cgi-bin/test.pl",
                function(data){
                var tr;
                
                debugger;
                $("<table id='jst'></table>").prependTo(document.body);
                
                for(var i=0; i< data.length;i++){
                    tr=$("table#jst").append("<tr></tr>");
                    for(var j=0; j< data[i].length;j++){
                        $(tr).append("<td></td>").text(data[i][j]);                    
                    }
                }

                });   


в дебаггере смотрю $('body").html() появляется только <table id='jst'></table>, а всяческие <tr></tr> и <td></td> не аппендятся. 

А вот 

                       $(tr).append("<td></td>").text(data[i][j]);      

добавляет текст 
<table id='jst'>  вот сюда  </table> соответственно там оказывается последняя цифиря в массиве.

это всё по просмотру в отладчике. страничка в ие девственно чиста :-/
PM MAIL GTalk Jabber   Вверх
ZlojEzh
Дата 12.11.2008, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

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



после выполнения
Код

 tr=$("table#jst").append("<tr></tr>");

переменная tr содержит объект jquery
поэтому дальше следует писать не $(tr).append(
а просто tr.append(

не проверял, но, мне кажется, должно помочь
PM MAIL ICQ   Вверх
ksnk
Дата 12.11.2008, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



ZlojEzh, налицо непонимание основ идеологии jQuery smile

Идеологическая мысль, которую следует запомнить - в результате цепочки действий мы имеем дело с тем-же объектом, с которого цепочка началась. Исключения есть, но в каждом случае в документации специально об этом говорят, и вроде как извиняются  smile

Итого, tr=$("table#jst").append("<tr></tr>") даст нам tr, работающий с table#jst. Дальнейшая работа с ним поменяет внутренности таблицы, что ни к чему хорошему привести не может...
Нужно пользоваться функцией appendTo, да и конструкции <tr></tr> эффективнее и правильнее сократить до tr. что-нибудь вроде
Код

                $("<table id='jst'></table>").prependTo(document.body);
                
                for(var i=0; i< data.length;i++){
                    tr=$("tr").appendTo("table#jst");
                    for(var j=0; j< data[i].length;j++){
                        $("td").appendTo(tr).text(data[i][j]);                    
                    }
                }



ZlojEzh, Вообще говоря, $(tr), если tr уже объект jQuery вернет его-же. 


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

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



Цитата(ksnk @  12.11.2008,  23:40 Найти цитируемый пост)
Итого, tr=$("table#jst").append("<tr></tr>") даст нам tr, работающий с table#jst

виноват, заблуждался, спасибо )

а вот как должен работать Ваш пример, я не уловил
Цитата(ksnk @  12.11.2008,  23:40 Найти цитируемый пост)
конструкции <tr></tr> эффективнее и правильнее сократить до tr

в документации такого не нашел
полез в код jquery
там нашел регу, которая определяет, с чем jquery имеет дело - с селектором или html-кодом
выглядит она вот так 
Код
/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/

значит $('tr') будет восприниматься, как выбор по селектору
решил все же протестировать
в результате таких вот действий
Код

$("<table id='jst'></table>").prependTo(document.body);
tr=$("tr").appendTo("table#jst");
alert($("body").html());

получается
Код

<TABLE id="jst"></TABLE>


поясните, плз, если я где-то ошибаюсь

Добавлено через 1 минуту и 48 секунд
Цитата(ksnk @  12.11.2008,  23:40 Найти цитируемый пост)
ZlojEzh, Вообще говоря, $(tr), если tr уже объект jQuery вернет его-же. 

не знал, а попробовать не удосужился
опять же, спасибо )

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


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


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

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



Цитата

да и конструкции <tr></tr> эффективнее и правильнее сократить до tr.

smile  
Мда... чего-то я в последнее время часто гоню. Надо бы начинать проверять то, что я тут задвигаю... 

Сократить, конечно, можно вот только до "<tr>", без угловых скобок оно действительно воспринимается как селектор. Да и особой эффективности как-то не ожидается, разве что на 4 байта меньше...

проверить сию конструкцию легко вот так
Код

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript"> 
var data =[[1,2,3],[4,5,6],[7,8,9,0]]

$("<table id='jst'></table>").prependTo(document.body);
                
                for(var i=0; i< data.length;i++){
                    tr=$("<tr>").appendTo("table#jst");
                    for(var j=0; j< data[i].length;j++){
                        $("<td>").appendTo(tr).text(data[i][j]);                    
                    }
                }
</script>
 



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




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


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

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