За последние 24 часа нас посетили 20064 программиста и 1714 роботов. Сейчас ищут 1473 программиста ...

как получить то что между тегами div?

Тема в разделе "JavaScript и AJAX", создана пользователем Padaboo, 5 мар 2010.

  1. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    в общем получаю аяксом html запихиваю его в div, появляется кнопка "еше", нажимаем еше
    то что получили в первый раз перезаписывается в другой див, а в первый воводим новые данные
    вопрос: как узнать что сейчас есть между тегом див и записать его в другой див?
    просто так не приравнивается,на value ругается,массивами пользоваться как то не красиво получится...

    [js]document.getElementById("contentid").innerHTML=document.getElementById("contentid2").тут что?[/js]
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    не поверишь. innerHTML
     
  3. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Luge
    О_О я думал...гг...
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    [js]<script language="JavaScript">
    document.getElementById("contentid").innerHTML=document.getElementById("contentid2").innerHTML;
    document.getElementById("contentid2").innerHTML = '3';
    </script>[/js]

    HTML:
    1. <div id="contentid" >1</div>
    2. <div id="contentid2" >2</div>
    3.  
    есть null или не является объектом в строке 2 ((
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    если у тебя всё стоит именно в таком порядке, то JS начинает выполняться ещё до формирования DOM дерева. И document.getElementById("contentid2") не может найти необходимый элемент.

    И зачем ты несколько раз ищешь один и тот же id?
    HTML:
    1. <div id="contentid" >1</div>
    2. <div id="contentid2" >2</div>
    3.  
    4. <script language="JavaScript" type="text/javascript">
    5. var con1 = document.getElementById('contentid');
    6. var con2 = document.getElementById('contentid2');
    7.  
    8. con1.innerHTML = con2.innerHTML;
    9. con2.innerHTML = 3;
    Код (Text):
    1. 2
    2. 3
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Luge
    мне казалось что нету разницы между
    con1.innerHTML
    и
    document.getElementById('contentid');
    буду знать... спасибо)
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    в твоём примере действительно разницы нет, но если взять нормальную страницу, где элементов не 2 и не 3 и делать не только такую перестановку, то разница будет :)
     
  8. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    не хочется новую тему создавать, что то я жестко накосячил ((

    HTML:
    1.  
    2. //таблица оформление и т.п.
    3. <input type="text" style="width:380px;font-size:12pt;" class="serch" onKeyPress="Enter(event)" id="serch"/>
    4. <input type="text" style="display:none" /> // это чтобы страница не перезагружалась на энтер
    5. <div id="contentid">3</div>
    6. <div id="contentid2">3</div>
    7.  
    8. <a href="#" onClick="Submit()" id="more" style="display:none">еше</a>
    9.  
    [js]<script language="JavaScript">
    con=document.getElementById("contentid");
    con2=document.getElementById("contentid2");
    more=document.getElementById("more");
    //ставим чтоб показывало с limit 0
    pager=0;

    http = false;
    result = new Array('','');

    try {
    http = new XMLHttpRequest();
    } catch (trymicrosoft) {
    try {
    http = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (othermicrosoft) {
    try {
    http = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
    http = false;
    }
    }
    }

    if (!http)
    alert("Error initializing XMLHttpRequest!");

    function Submit() {
    serchvalue = document.getElementById("serch").value;
    url = "321.php?serch=" + escape(serchvalue)+'&pager='+pager;
    http.open("GET", url, true);
    http.onreadystatechange = updatePage;
    http.send(null);
    }

    function updatePage() {
    if ((http.readyState == 4) && (http.status == 200)) {
    //через массив решил сделать...
    //меняем местами значения и обновляем нижнее
    result[0]=result[1];
    result[1] = http.responseText;
    //вставляем их в дивы
    con.innerHTML = result[0];
    con2.innerHTML = result[1];
    //показываем кнопку "еше"
    more.style.display="block";
    pager++;
    }
    }

    function Enter(event){
    if(event.keyCode==13){
    Submit();
    pager=0; //сбрасываю пейджер если идёт новый поиск
    }
    }
    </script>[/js]
    321.php
    PHP:
    1. <?php
    2. if(isset($_GET['pager'])){
    3. $pager=($_GET['pager'])*5; // пейджер из js умножаю на 10
    4. } else { echo 'не передалось'; exit; }
    5. //тут генерирую html
    6. function tables($row){
    7. $table='<table  style="margin-top:8px;background-color:#F5F5F5;border:1px dotted black"><tr><td style="width: 495px"  colspan="2">'.$row['spec'].' '.substr($row['dop'], 0, 100).'</td></tr><tr><td style="width:90%"><span class="text"></span></td>';
    8. $table=$table.'<td style="width:10%"></td></tr></table>';
    9. return $table;
    10. }
    11.  
    12. $link = mysql_connect("localhost","root","")
    13.          or die("Could not connect: " . mysql_error());
    14. mysql_query("SET NAMES 'cp1251';");
    15. mysql_query("SET CHARACTER SET 'cp1251';");
    16. mysql_query("SET SESSION collation_connection = 'cp1251_general_ci';");
    17. $db="sitedatabase";
    18. mysql_select_db($db)  or  die("Не  могу  открыть  $db:  ".mysql_error());
    19. $finish=5;// сколько записей выводить
    20. $query="SELECT * from `worker` WHERE spec='123' LIMIT ".$pager.",".$finish;// cобираю запрос
    21. $result=mysql_query($query,$link);
    22. while($row = mysql_fetch_array($result)){
    23. echo tables($row);
    24. } ?>
    25.  
    в базе 40 записей... php просто для теста...не в сайт такой пойдет)
    когда в первый раз нажимаю почему то ничего не происходит просто кнопка "еше" появляется...
    жму "еше" выходит с 40 по 31 запись, еше раз нажимаю выходит с 31 по 11
    почему в первый раз не срабатывает?
    когда по строке поиска просто энтер нажимаю то оба div пустые становятся
    это
    [js]con.innerHTML = result[0];
    con2.innerHTML = result[1];[/js]
    выполняется быстрее чем [js]result[1] = http.responseText;[/js] ?оО
    по идее должно выводить 40-30, потом 40-20,30-10,20-1,10-1
     
  9. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    На первый взгляд бросилась ошибка:
    result используется внутри функции. А ранее переменная объявлена локально (через var), поэтому внутри функции она недоступна.
     
  10. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Kreker
    убрал var, не помогло (
     
  11. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Поставь firebug, там есть вкладка сеть, которая позволяет видеть, что отсылается и что принимается. Так будет проще.
     
  12. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Kreker
    спасибо, буду разбираться ...
     
  13. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    я, конечно, извиняюсь, но блин
    тэги закрывать будем?
    сам догадаешься что происходит, когда innerHTML в незакрытый див лезет?

    и ещё, проверяй, хотя бы, что данные приходят от бэкэнда. Флаг там передавай какой-нить или просто на длину ответа смотри. А то как юзер узнает, что все данные уже получил?
     
  14. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Luge
    да просто пока тестирую, потом кнопку "вверх" сделаю и вывод "записей больше нет"
    зы:спасибо
     
  15. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    неа, ты не тестируешь, ты форум как дебаг юзаешь :D
     
  16. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Luge
    виноват, в первый раз что то подобное делаю просто, если какая то ошибка то мне все время кажется, что я не знаю каких то тонкостей, а оказалось просто не внимательный...
    зы:а есть какая то штука чтобы проверила все теги на закрытость? в том числе <img />и <br/> или на вот такую вложенность <div><p></div></p> ?
     
  17. engager

    engager Активный пользователь

    С нами с:
    21 янв 2009
    Сообщения:
    1.106
    Симпатии:
    1
    уже называли firebug (для FF).
    есть еще у chrome неплохой парсер DOM-структуры и жава-скриптов. я склоняюсь в его сторону.
     
  18. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а ещё dragonfly у оперы (помощнее стал в 10.5) и Firebug Lite
     
  19. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    доделываю)