Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.03.2012, 23:51
Интересующийся
Отправить личное сообщение для asdasd Посмотреть профиль Найти все сообщения от asdasd
 
Регистрация: 05.01.2011
Сообщений: 14

Проиграть звук в чате по приходу личного сообщения
Есть список элементов с id ('0private') при появлении элемента с больший id (0-9999999) установить переменную flag в значение ON, теперь скажу что я хочу сделать.. есть чат в котором я хочу сделать звуковое оповещение по приходу личного сообщения... пробую примерно вот так

<script>
flag_audio="on",  max="0private", found=0;

function Update_chat() {  
  $.ajax({ 
       url:  'text.php',
       data: 'update_text=1',
       timeout: '4000',
       type:   'GET',
       success:  function(response)  { 
                   document.getElementById('chat').innerHTML=response;
                    if(flag_audio == "on")  // если выбран переключатель, то проиграть звук
                       play_sound();                    
                }
       });
}

function play_sound() {
    for(var i=0; i < document.getElementById('chat').childNodes.length; i++)   {
       count=i+"private";
         if(max < count && document.getElementById(count) != undefined) {
            max=count;
            found=1;
          }
    }    
    if(found){                      //проверка на то что бы проиграло только 1 раз
      document.getElementById('play_private').play();
      found=0;
        } 
}
</script>

<audio id='play_private'>
   <source src="../sounds/private.ogg" type="audio/ogg" />
</audio>
<div id='chat'>
  <div id='1private'>123</div>
  <div id='2private'>123</div>
  <div id='3private'>123</div>
  <div>some text</div>
  <div>some text2</div>
</div>

Последний раз редактировалось asdasd, 29.03.2012 в 13:48.
Ответить с цитированием
  #2 (permalink)  
Старый 29.03.2012, 15:30
Интересующийся
Отправить личное сообщение для asdasd Посмотреть профиль Найти все сообщения от asdasd
 
Регистрация: 05.01.2011
Сообщений: 14

Up
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2012, 20:41
Интересующийся
Отправить личное сообщение для asdasd Посмотреть профиль Найти все сообщения от asdasd
 
Регистрация: 05.01.2011
Сообщений: 14

В тех статьях упор на воспроизведение(остановку) звука... а у меня проблема вроде с тем как вычислить число элементов внутри 'chat' и как узнать какой из них 'новый'.... да и писал я в надежде что может кто то подскажет более простой и гениальный способ))
Ответить с цитированием
  #4 (permalink)  
Старый 30.03.2012, 09:38
Интересующийся
Отправить личное сообщение для asdasd Посмотреть профиль Найти все сообщения от asdasd
 
Регистрация: 05.01.2011
Сообщений: 14

подскажите как сделать выражение такого плана выполняемым:
пробовал даже с toString()

<script>
var a = "111private".match(/\d+/);
var b = "35private".match(/\d+/);

if( a > b ) alert("ok")
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2012, 10:51
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

var reg_exp=/(\d+)/;
var a = "111private".match(reg_exp);
var b = "35private".match(reg_exp);
if( (a)&& (b) && ( parseInt(a[1]) > parseInt(b[1]) ) ) {alert("ok");}
Ответить с цитированием
  #6 (permalink)  
Старый 01.04.2012, 12:30
Интересующийся
Отправить личное сообщение для asdasd Посмотреть профиль Найти все сообщения от asdasd
 
Регистрация: 05.01.2011
Сообщений: 14

Пытаюсь проверить существование элемента по id вот таким способом

if(document.getElementById(id))

но всегда в ответ null(независимо есть этот элемент на странице или его нет)... хотя писали что должно работать...(или в новых версиях браузеров это уже не работает)
Ответить с цитированием
  #7 (permalink)  
Старый 01.04.2012, 13:01
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Если null, значит нет элемента.
Ответить с цитированием
  #8 (permalink)  
Старый 01.04.2012, 14:08
Интересующийся
Отправить личное сообщение для asdasd Посмотреть профиль Найти все сообщения от asdasd
 
Регистрация: 05.01.2011
Сообщений: 14

Да его не было!! точнее тег был) но с другим id

Последний раз редактировалось asdasd, 02.04.2012 в 21:20.
Ответить с цитированием
  #9 (permalink)  
Старый 01.04.2012, 17:44
Server
Отправить личное сообщение для Rootpassword Посмотреть профиль Найти все сообщения от Rootpassword
 
Регистрация: 26.09.2011
Сообщений: 252

Сообщение от asdasd
он есть... вставляется посредством ajax на страницу..
В DOM инспекторе посмотрите внимательно. Если null-значит нет.
Также, скрипт проверки или сам элемент - не в фрейме ли?
Ответить с цитированием
  #10 (permalink)  
Старый 01.04.2012, 21:39
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Значит на момент проверки его нет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проиграть звук LRCenter Общие вопросы Javascript 6 01.06.2011 22:34