2016-09-06 6 views
0

Я попробовал решение, представленное в нескольких других темах здесь, но по какой-то причине, он не работает для меняJavascript локальные переменные в глобальные переменные

$(function() { 
$('.talk').live('click', 'button', function() 
{ 
var user1 = $(this).val(); 
var user2=$(this).prev().val(); 
window.user=user1; 
window.recipient=user2; 

}) 
}) 

(...)

console.log(window.user); 
var refresh = setInterval(function(){ myTimer() }, 1000); 
function myTimer() {loadchat(window.user,window.recipient); 
} 
function myStopFunction() {clearInterval(refresh);} 

Мне нужна функция loadchat для получения параметров user1 и user2, но они ограничены первой функцией i, вставленной здесь. Я читал, что если я использую window.user1 = он будет работать, но он не будет.

так, как это прямо сейчас, console.log (window.user) возвращает «неопределенный» (я также попытался просто «пользователь» вместо window.user)

+2

* «console.log (window.user) вернет« undefined »« * Я уверен, что 'console.log (window.user)' будет выполняться ** до того, как будет нажата кнопка '.talk'. 'window.user = user1;' будет выполнен * некоторое время в будущем *. 'console.log (window.user)' выполняется при загрузке страницы. –

+0

Обратите внимание, что 'function() {myTimer()}' может быть просто 'myTimer'. – RobG

+0

Вы можете определить свою переменную вне функции или определить ее на объекте окна – aeid

ответ

0

Определите глобальное значение вне функции

<script> 
var globalVariable; 
function() 
{ 
    globalVariable = $(this).val(); 
} 
</script> 
+1

У вас есть синтаксическая ошибка. И почему эта работа должна работать вместо того, что сейчас делает OP? –

0

что я могу понял ваш вопрос это вам нужен способ для хранения пользователей и получателя

вы можете использовать этот

$(function() { 
$('.talk').live('click', 'button', function() { 
    var user1 = $(this).val(); 
    var user2=$(this).prev().val(); 

    localStorage.setItem("User", user1); 
    localStorage.setItem("recipient", user2); 
    }) 
}) 

может получить данные с помощью функции localStorage.getItem("User");

, но это проблематично, поскольку данные останутся остаются в памяти после того, как закрыть вкладку , чтобы решить эту проблему вам нужно использовать сессии вары

sessionStorage.setItem("User", user1); 
sessionStorage.getItem("User"); 
Смежные вопросы