Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
 Аватар для prudkiy
181 / 149 / 55
Регистрация: 21.07.2013
Сообщений: 958

Изменить переменную в функции

10.12.2015, 21:35. Показов 4922. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем вечера.
Как знаю глобальная переменная объявляется просто без "var"
Но вот так изменить ее не выходит.
Функция вызывается от приема данных от ajax
Данные приходят точно и верные.
В функции alert говорит что надо
но за функцией без изменений.
JavaScript
1
2
3
4
5
6
thisIdUser = '';      
function thisIdUserFun(data,d){
thisIdUser = data;
alert(thisIdUser)
}
alert(thisIdUser)
не судите строго, в js я не очень
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2015, 21:35
Ответы с готовыми решениями:

В теле функции изменить глобальную переменную
Добрый день! Имеется файл main.js в котором объявлена глобальная (?) переменная data, и функция...

Как передать переменную окна через текстовую переменную?
Открыл одно окно, потом второе, и хочу передать индетефикатор первого окна во второе, чтобы оно там...

Переменную js в php переменную
Подскажите, как передать переменную js в php-переменную. Нагуглил много чего, но все не помогает....

7
0 / 0 / 4
Регистрация: 22.10.2015
Сообщений: 21
11.12.2015, 16:31
Функцию нужно вызвать:
JavaScript
1
2
3
4
5
6
7
thisIdUser = '';
function thisIdUserFun(data,d){
thisIdUser = data;
alert(thisIdUser)
}
thisIdUserFun('foo', 'bar'); //тут
alert(thisIdUser)//foo
0
1 / 1 / 2
Регистрация: 08.12.2015
Сообщений: 7
11.12.2015, 23:45
Для объявления переменной всегда используй "var", это поможет избавится от неправильной работы скрипта, иногда бывает явных ошибок нет, и скрипт работает неправильно, а все потому что где то переменные объявлены с "var" а где то без "var"
0
 Аватар для prudkiy
181 / 149 / 55
Регистрация: 21.07.2013
Сообщений: 958
12.12.2015, 11:12  [ТС]
akula410, я хоть и в js не селен но ведь писал что как знаю с var локальные, а без глобальные переменные
0
1 / 1 / 2
Регистрация: 08.12.2015
Сообщений: 7
12.12.2015, 13:01
По поводу ключевого слова "var" - http://javascript.ru/var
Глобальная переменная - это переменная у которой область видимости - window.
Если переменную создать внутри функции то это уже локальная переменная, если внутри функции не подставить слово "var" то становится глобальной.
Что бы в этих понятиях не путаться в начале скрипта создавайте все глобальные переменные которые вы будете использовать с ключевым словом "var" можно не присваивать значения, а потом в функциях там где необходимо меняйте значения.
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
12.12.2015, 13:27
prudkiy, Проблема в асинхронности. Смотрите, что происходит:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
// 1. Объявили переменную
var thisIdUser = 'ABC';
// 2. Выполняете ajax-запрос, скорее всего, что асинхронный
//  и результат присваиваем переменной 
$.ajax({
    success: function(data){
        thisIdUser = data;
    }
});
// 3. Запрос еще не завершен, а сценарий выполняется дальше 
// и выводит вам значение переменной
alert(thisIdUser); // ABC
// Но т.к. запрос еще не завершен, значение переменной не изменилось
Есть несколько вариантов решения данной задачи:
1. Сделать ajax-запрос синхронным. Решение, мягко говоря, не самое удачное, но иногда и без него не обойтись.
2. Использовать "Обещания" (Promise). В jQuery, для таких операций есть объект $.Deferred
3. После завершения запроса, вызывать функцию, где должна использоваться переменная с измененным значением.
Выбор за вами. Могу еще поделиться ссылкой на статью по этой теме
0
 Аватар для prudkiy
181 / 149 / 55
Регистрация: 21.07.2013
Сообщений: 958
12.12.2015, 21:38  [ТС]
Lazy_Den а почему еще не завершен.
Ведь в success указывается функция которая выполниться после завершения запроса и получнеия ответа. В data ведь этот ответ и помещается.
JavaScript
1
2
3
function(data){
        thisIdUser = data;
    }
Что вот заметил
Если писать так
JavaScript
1
2
3
4
5
6
7
8
9
myVar = 'var';
 
function test(){
myVar = 'new var';
}
 
test()
 
alert(myVar);
то переменная изменяется
Но вот если так
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
myVar = 'var';
 
function test(){
$.ajax({
    success: function(data){
        myVar = 'new var';
    }
});
}
 
test()
 
alert(myVar);
то нет (
0
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
12.12.2015, 23:02
Цитата Сообщение от prudkiy Посмотреть сообщение
а почему еще не завершен
Вопрос не правильный. Сколько может продолжаться ваш запрос? Иногда пару миллисекунд, секунду, а иногда пару секунд. Но даже, если запрос выполняется всего пару миллисекунду, то этого уже достаточно для того, чтоб вы не получили результат, который ожидали. Вот пример:
JavaScript
1
2
3
4
5
6
7
var a = 'ABC';
function foo() {
    a = 'DEF';
    console.log('Inside the function: ' + a); // Inside the function: DEF
}
foo();
console.log('Outside function: ' + a); // Outside function: DEF
JavaScript
1
2
3
4
5
6
7
8
9
var a = 'ABC';
function foo() {
    setTimeout(function() {
        a = 'DEF';
        console.log('Inside the function: ' + a); // Inside the function: DEF
    }, 1);
}
foo();
console.log('Outside function: ' + a); // Outside function: ABC
В отличии от того же PHP, где, образно говоря, следующая строчка кода не начнет выполнятся до того, как предыдущая не закончит выполнение, тут - в JS - дело обстоит иначе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2015, 23:02
Помогаю со студенческими работами здесь

Изменить переменную в элементе div
Имеется например такое <div class='Player' spTitle='Фарго' spWidth='1050'></div> Можно ли как...

Изменить переменную php на лету
Народ , подскажите, на странице есть Селект , выбор города. При выборе одного города, меняется...

Не могу изменить переменную ХР при нажатие на кнопку "ydar"
Не могу изменить переменную ХР, при нажатие на кнопку "ydar". Объявлена вне функции.

Изменить переменную и вызвать функцию с новым значением переменной
Здравствуйте. Есть такой код: jQuery(document).ready(function slider(){ var sc=$(".slider...

И снова глобальная переменная в js. Как изменить значение глобальной переменной в одной функции и увидеть это значение в другой функции?
Это учебное задание. Помогите, пожалуйста, разобраться почему func1 видит какую-то новую переменную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru