Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обновление в нужном месте
 
 автор: pavluxa09   (20.06.2012 в 21:16)   письмо автору
 
 

Здравствуйте. У меня на JQUERY есть DIV в который я вгоняю содержимое, мне нужна функция которая в уже существующем содержимом заменит всё что бы стало как в том которое я ей предлагаю. Проще говоря у меня там есть <div>fasfas</div> а в новом варианте <div>233</div> и нужно что бы функция не изменяя содержимого (т.е самого <div>) сменило то что в нём

  Ответить  
 
 автор: confirm   (20.06.2012 в 21:41)   письмо автору
 
   для: pavluxa09   (20.06.2012 в 21:16)
 

Гляди, уже и DIV на jQuery! Ничего не путаете?
Вы сами то поняли чего вам надо?
>которая в уже существующем содержимом заменит всё что бы стало как в том которое я ей предлагаю.
>и нужно что бы функция не изменяя содержимого (т.е самого <div>) сменило то что в нём

  Ответить  
 
 автор: AlexSol   (20.06.2012 в 21:57)   письмо автору
 
   для: pavluxa09   (20.06.2012 в 21:16)
 

вам шаблонизатор нужен. попробуйте начать с http://api.jquery.com/category/plugins/templates/

  Ответить  
 
 автор: pavluxa09   (20.06.2012 в 22:18)   письмо автору
 
   для: AlexSol   (20.06.2012 в 21:57)
 

При помощи AJAX у меня каждую секунду отправляется запрос на сервер, в результате я получаю игровые данные. Я их заношу в DIV, в нужный тег нужное поле из этих данных. Но когда это работает, на браузерах типа Google Chrome картинки мигают, нужно сделать так что бы если это поле не обновилось (осталось прежним) то его обновлять не нужно. Как это лучше сделать и что поможет?

  Ответить  
 
 автор: AlexSol   (20.06.2012 в 22:40)   письмо автору
 
   для: pavluxa09   (20.06.2012 в 22:18)
 

сохраните перед отправкой запроса в переменную все значения которые хотите обновить. когда ответ придет - сравните значения и обновите только нужные поля

  Ответить  
 
 автор: pavluxa09   (20.06.2012 в 22:52)   письмо автору
 
   для: AlexSol   (20.06.2012 в 22:40)
 

Не очень удобно, значений очень очень много. для каждого писать

  Ответить  
 
 автор: confirm   (21.06.2012 в 06:01)   письмо автору
 
   для: pavluxa09   (20.06.2012 в 22:52)
 

Много, это сколько и чего?
Если, например, изменять изображение на экране не во время бланкирующих импульсов видео подсистемы, а во время формирование растра, то будут заметны мерцания изображения.
Вы заполняете элементы div, так о каком изображении речь? При такой замене будут заметны только изменения их значений.
Если у вас происходит что-то невообразимое, то браузер тут не причем, а это вы наколбасили такой код, что его переваривать нужно так долго, что 1 сек просто не хватает, или ваш код настолько безграмотен в общем, что и является причиной чего-то вас не устраивающего. И кто вам сказал, что серверу нужно возвращать все значения, а не только те, которые изменились, чтобы потом клиент разбирался что к чему?
Вот пример. В нем 3600 элементов DIV вложенных в родителя, соответственно массиву на сервере. При каждом запросе сервера, инвертируются 300 элементов этого массива, и эти измененные значения возвращаются клиенту под своими ключами. Ключ возвращаемого значения, это индекс элемента DIV вложенного в родителя. Вдобавок к изменению содержимого элементов DIV, изменяется (для примера) и цвет их фона.
<?php
session_start
();
if(empty(
$_SESSION['cells'])) $_SESSION['cells'] = array_fill(0,3600,0);
$cells = &$_SESSION['cells'];
if(isset(
$_POST['cell'])) {
   
$keys array_rand($cells,300);
   foreach(
$keys as $k$cells[$k] ^= 1;
   
$keys array_intersect_key($cellsarray_flip($keys));
   echo 
json_encode($keys); 
   exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<style>
body {
    font: 0.7em Verdana,Arial,sans-serif;
}
#boxgame {
    display: block;
    width: 900px;
    height: 900px;
}
#boxgame div {
    display: block;
    width: 14px;
    height: 14px;
    border: 1px solid #999;
    margin: 1px 0 0 1px;
    float: left;
}
.mark {
    background: #FBF0C6;
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
<script type="text/javascript">
$(function(){
   setInterval(function(){
      $.post("",{cell:1},function(d){
         $("#boxgame div").removeClass("mark");
         for(k in d) $("#boxgame div:eq("+k+")").text(d[k]).addClass("mark");
      }, 'json')
   }, 1000); 
});    
</script>
</head>
<body>
<div id="boxgame">
<?php
  
foreach($cells as $v) echo '<div>'.$v.'</div>';
?>
</div>
</body>
</html>

И что моргает? А убрать изменения фона?
По аналогии, каждому DIV можно указать id, если не устраивает их индекс, а данные на сервере должны иметь ключи соответствующие этим id. Тогда пришедшие с сервера данные будут указывать на id тех элементов, данные которых надо изменить.

  Ответить  
 
 автор: pavluxa09   (21.06.2012 в 11:01)   письмо автору
 
   для: confirm   (21.06.2012 в 06:01)
 

Всё это конечно хорошо, но дело не в том. Я в DIV засовываю картинку <img src="../?id={переменная}" /> и если у меня переменная не изменяется то картинка всё равно засовывается, и в браузере Chrome она загружается заново, а в Firefox она не обновляется. Как с этим бороться?

  Ответить  
 
 автор: AlexSol   (21.06.2012 в 11:58)   письмо автору
 
   для: pavluxa09   (21.06.2012 в 11:01)
 

> и если у меня переменная не изменяется то картинка всё равно засовывается

сравнивать значения до/после и не засовывать

  Ответить  
 
 автор: confirm   (21.06.2012 в 13:54)   письмо автору
 
   для: pavluxa09   (21.06.2012 в 11:01)
 

А разница большая да, или число менять в ячейке, или строковое значение?
Вам что переписать пример, но уже со строками? А сами сути никак не поймете. Кстати, не картинку нужно "засовывать" в DIV, а изменять переменную, надеюсь именно это вы и делаете.

  Ответить  
 
 автор: pavluxa09   (21.06.2012 в 19:16)   письмо автору
 
   для: confirm   (21.06.2012 в 13:54)
 

Всё разобрался, всем спасибо за помощь. Сделал так: создал переменную в которой храню результаты предыдущего обновления и смотрю изменилось ли там что то или нет. Что изменилось по новой загружаю

  Ответить  
 
 автор: confirm   (21.06.2012 в 19:32)   письмо автору
 
   для: pavluxa09   (21.06.2012 в 19:16)
 

Если у вас "играет" сервер, то есть думает он, то ужас.

  Ответить  
 
 автор: pavluxa09   (21.06.2012 в 19:39)   письмо автору
 
   для: confirm   (21.06.2012 в 19:32)
 

Та не, просто я не правильно высказал свою мысль, мне нужна была лишь функция которой я передаю содержимое в виде HTML и место куда его нужно засунуть, а она смотрит если в том месте есть уже такое содержимое то она ничего не меняет, а если есть отличия то она проходит через всё содержимое и меняет только там где есть отличия. Я так понял это писать и вам и мне лень, поэтому сделал как и думал первый раз, тупо менять значения в каждом месте самому.

  Ответить  
 
 автор: confirm   (21.06.2012 в 19:42)   письмо автору
 
   для: pavluxa09   (21.06.2012 в 19:39)
 

Вы думаете, что сейчас ясно выразились?

>функция которой я передаю содержимое в виде HTML и место куда его нужно засунуть, а она смотрит если в том месте есть уже такое содержимое то она ничего не меняет, а если есть отличия то она проходит через всё содержимое и меняет только там где есть отличия.

Ужас вдвойне.

  Ответить  
 
 автор: pavluxa09   (22.06.2012 в 09:29)   письмо автору
 
   для: confirm   (21.06.2012 в 19:42)
 

var a = '<div>одна</div> строка';
myfunc('<div>другая</div> строка');
alert(a);

myfunc('<div>другая</div> строка'); - функция ничего не делает потому что содержимое идентично

Результат: <div>другая</div> строка.
При этом функция нашла div и в нём заменило содержимое, а слово строка оставило не изменяя.

  Ответить  
 
 автор: confirm   (22.06.2012 в 11:32)   письмо автору
 
   для: pavluxa09   (22.06.2012 в 09:29)
 

Охринеть. И вы еще хотите, чтобы браузеры такое перемалывали и при этом не "плевались"?
DIV он и в Африке DIV, и изменяется не он, а его содержимое. Спрашивается, зачем проверять еще и элементы?
Собственно без толку спрашивать вас, как и что-то объяснять. Показал я вам пример, а вы ни черта так и не поняли. Вот и будете решать свои проблемы "подгонкой под ответ".

  Ответить  
 
 автор: pavluxa09   (23.06.2012 в 11:25)   письмо автору
 
   для: confirm   (22.06.2012 в 11:32)
 

Мы друг друга не до понимаем, вопрос по теме Javascript, а не PHP.

  Ответить  
 
 автор: confirm   (23.06.2012 в 13:33)   письмо автору
 
   для: pavluxa09   (23.06.2012 в 11:25)
 

Можно подумать, что я вам не о представлении на клиенте рассказывал? У вас бардак и ужас в вашем подходе, и соответственно коде, а вы еще доказываете мне, что я вам пытаюсь объяснить. Я пытаюсь - вы не понимаете.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования