в общем получаю аяксом html запихиваю его в div, появляется кнопка "еше", нажимаем еше то что получили в первый раз перезаписывается в другой див, а в первый воводим новые данные вопрос: как узнать что сейчас есть между тегом див и записать его в другой див? просто так не приравнивается,на value ругается,массивами пользоваться как то не красиво получится... [js]document.getElementById("contentid").innerHTML=document.getElementById("contentid2").тут что?[/js]
[js]<script language="JavaScript"> document.getElementById("contentid").innerHTML=document.getElementById("contentid2").innerHTML; document.getElementById("contentid2").innerHTML = '3'; </script>[/js] HTML: <div id="contentid" >1</div> <div id="contentid2" >2</div> есть null или не является объектом в строке 2 ((
если у тебя всё стоит именно в таком порядке, то JS начинает выполняться ещё до формирования DOM дерева. И document.getElementById("contentid2") не может найти необходимый элемент. И зачем ты несколько раз ищешь один и тот же id? HTML: <div id="contentid" >1</div> <div id="contentid2" >2</div> <script language="JavaScript" type="text/javascript"> var con1 = document.getElementById('contentid'); var con2 = document.getElementById('contentid2'); con1.innerHTML = con2.innerHTML; con2.innerHTML = 3; </script> Код (Text): 2 3
Luge мне казалось что нету разницы между con1.innerHTML и document.getElementById('contentid'); буду знать... спасибо)
в твоём примере действительно разницы нет, но если взять нормальную страницу, где элементов не 2 и не 3 и делать не только такую перестановку, то разница будет
не хочется новую тему создавать, что то я жестко накосячил (( HTML: //таблица оформление и т.п. <input type="text" style="width:380px;font-size:12pt;" class="serch" onKeyPress="Enter(event)" id="serch"/> <input type="text" style="display:none" /> // это чтобы страница не перезагружалась на энтер <div id="contentid">3</div> <div id="contentid2">3</div> <a href="#" onClick="Submit()" id="more" style="display:none">еше</a> [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: <?php if(isset($_GET['pager'])){ $pager=($_GET['pager'])*5; // пейджер из js умножаю на 10 } else { echo 'не передалось'; exit; } //тут генерирую html function tables($row){ $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>'; $table=$table.'<td style="width:10%"></td></tr></table>'; return $table; } $link = mysql_connect("localhost","root","") or die("Could not connect: " . mysql_error()); mysql_query("SET NAMES 'cp1251';"); mysql_query("SET CHARACTER SET 'cp1251';"); mysql_query("SET SESSION collation_connection = 'cp1251_general_ci';"); $db="sitedatabase"; mysql_select_db($db) or die("Не могу открыть $db: ".mysql_error()); $finish=5;// сколько записей выводить $query="SELECT * from `worker` WHERE spec='123' LIMIT ".$pager.",".$finish;// cобираю запрос $result=mysql_query($query,$link); while($row = mysql_fetch_array($result)){ echo tables($row); } ?> в базе 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
На первый взгляд бросилась ошибка: result используется внутри функции. А ранее переменная объявлена локально (через var), поэтому внутри функции она недоступна.
Поставь firebug, там есть вкладка сеть, которая позволяет видеть, что отсылается и что принимается. Так будет проще.
я, конечно, извиняюсь, но блин тэги закрывать будем? сам догадаешься что происходит, когда innerHTML в незакрытый див лезет? и ещё, проверяй, хотя бы, что данные приходят от бэкэнда. Флаг там передавай какой-нить или просто на длину ответа смотри. А то как юзер узнает, что все данные уже получил?
Luge виноват, в первый раз что то подобное делаю просто, если какая то ошибка то мне все время кажется, что я не знаю каких то тонкостей, а оказалось просто не внимательный... зы:а есть какая то штука чтобы проверила все теги на закрытость? в том числе <img />и <br/> или на вот такую вложенность <div><p></div></p> ?
уже называли firebug (для FF). есть еще у chrome неплохой парсер DOM-структуры и жава-скриптов. я склоняюсь в его сторону.