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

HTML+CSS+JavaScript

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

 

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

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

тема: Видимость переменной js
 
 автор: OLi   (07.02.2014 в 02:42)   письмо автору
 
 

Имеется такой код:

var PM = {

        tabs: [],
    Init : function(){
        var socket = new io.connect('http://site.com:8080');
if (supportChat){
// Show
}
    }, // Next Any Functions
}

$(document).ready(function() {
var supportChat = $("#ChatWindow");
});


Далее в html имеется ссылка с событием onclick ="PM.Init"
Проблема в том, что при обращении к объекту PM.Init внутри не доступна переменная supportChat, если ее объявить внутри PM, то везде внутри приходиться обращаться как: PM.supportChat, и при это внешне эта переменная становится недоступной

  Ответить  
 
 автор: Sfinks   (07.02.2014 в 08:09)   письмо автору
 
   для: OLi   (07.02.2014 в 02:42)
 

нужно убрать var, чтобы переменная была глобальной.
$(document).ready(function() { 
  supportChat = $("#ChatWindow"); 
});

  Ответить  
 
 автор: OLi   (08.02.2014 в 01:44)   письмо автору
 
   для: Sfinks   (07.02.2014 в 08:09)
 

Спасибо. А в чем тогда ошибка в таком коде:

$(document).ready(function() {

 activeUserID = '';
        supportChat = $("#ChatWindow"),
        messagesWr = supportChat.find("#ListDialog .list"),
        chatInput = supportChat.find("#chatInput"),
        status = supportChat.find("#status");

init();

    function init() {

        var socket = PM.Init();
        chatInput.focus();

        chatInput.keydown(function(e) {
            if (e.keyCode === 13) { // Enter

                if (chatInput.val() && activeUserID) {
                    socket.emit("private", { msg: chatInput.val(), to: activeUserID });
                    chatInput.val('');
                }
            }
        });
}


 socket.on('connect', function() {
        status.html("Connected.");
        socket.emit('setuser', wm.id);
        //PM.total.html(data.users.length);
    });

});

Ругается на строку: status.html("Connected.");

Uncaught TypeError: Object [object Object] has no method 'html' 

  Ответить  
 
 автор: moonfox   (08.02.2014 в 03:34)   письмо автору
 
   для: OLi   (08.02.2014 в 01:44)
 

а чему вообще у вас по итогу равен status?
$("#ChatWindow").find("#status") так ?

  Ответить  
 
 автор: OLi   (08.02.2014 в 13:38)   письмо автору
 
   для: moonfox   (08.02.2014 в 03:34)
 

console.log( [ status, typeof status ] );
дает:
["[object Object]", "string"]

А вот так работает:
$("#ChatWindow").find("#status").html('tst');

  Ответить  
 
 автор: moonfox   (08.02.2014 в 16:03)   письмо автору
 
   для: OLi   (08.02.2014 в 13:38)
 

переменные через var не пробовали объявлять?

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

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