Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2 / 2 / 0
Регистрация: 01.02.2017
Сообщений: 16

Глобальная переменная

01.02.2017, 12:41. Показов 1797. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне необходимо, при нажатии на кнопку, менять значение глобальной, ранее объявленной переменной( значение s=100; при нажатии на кнопку, s становится s=s+3. Я делала это через функцию, но функция, почему-то не видит переменную эту, подскажите, пожалуйста!

Вот код:

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<head>
<script>
    var s = 100; // Создаём переменную
    document.getElementById('s').innerHTML = s;
 
function sum() {
    s = s + 3;
    alert(s);
}
</script>
</head>
<body>
    <a href="#" onclick="sum()">
        <span>  Нажать  </span>
    </a>
</body>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2017, 12:41
Ответы с готовыми решениями:

Глобальная переменная
Имеется функция в которую при событии онклик попадает переменная news_id function news_plus(news_id) { ...

Глобальная переменная
Здравствуйте! Прошу помочь: При запуске нижеприведенного кода изменения глобальной переменной а в функции fst() не &quot;видны&quot;...

Глобальная переменная
Есть ajax запрос, который получает ассоциативный массив, данный массив нужно использовать в другом месте(иной файл), где данная...

8
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
01.02.2017, 12:59
Katurina, у функций локальная область видимости. В нее глобальную переменную надо передавать аргументом.
В данном случае без передачи аргумента можно сделать так:
HTML5
1
<a href="#"><span>Нажать</span></a>
JavaScript
1
2
3
4
5
var s = 100; // Создаём переменную
document.querySelectorAll('a')[0].addEventListener('click', function(){
  s += 3;
  alert(s);
})
0
2 / 2 / 0
Регистрация: 01.02.2017
Сообщений: 16
01.02.2017, 13:16  [ТС]
Таких кнопок с изменением параметра должно быть несколько на одной странице, поэтому вызов функции был именно в кнопке... А так ко всем "a". К тому же, не знаю почему, но ваш пример вовсе не выдает alert(s)
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
01.02.2017, 13:27
Цитата Сообщение от Katurina Посмотреть сообщение
К тому же, не знаю почему, но ваш пример вовсе не выдает alert(s)
https://jsfiddle.net/5xLLjjpm/

Либо создавайте переменную как локальную, либо передавайте значение аргументом.
HTML5
1
<a href="#" onclick="sum()"><span>Нажать</span></a>
JavaScript
1
2
3
4
5
function sum(){
  var s = 100;
  s += 3;
  alert(s);
}
либо
HTML5
1
<a href="#" onclick="sum(100)"><span>Нажать</span></a>
JavaScript
1
2
3
4
function sum(s){
  s += 3;
  alert(s);
}
0
2 / 2 / 0
Регистрация: 01.02.2017
Сообщений: 16
01.02.2017, 13:39  [ТС]
Дело в том, что при повторном нажатии должно снова +3 быть, поэтому с такой фиксацией не выйдет(т.е. уже получили 103, и при повторном нажатии должно быть 106 и т.д)

Добавлено через 5 минут
Всё, я разобралась как доработать код, спасибо, Вы очень помогли!)

Добавлено через 2 минуты
Хотя нет, рано обрадовалась, всё равно осталось также: с использованием локальной переменной работает, а иначе нет( а мне, из-за необходимости работы при повторном нажатии, нужно использовать глобальную(
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
01.02.2017, 14:02
Лучший ответ Сообщение было отмечено Katurina как решение

Решение

Цитата Сообщение от Katurina Посмотреть сообщение
Дело в том, что при повторном нажатии должно снова +3 быть
HTML5
1
2
<a href="#"><span>Нажать</span></a>
<p id="p"></p>
JavaScript
1
2
3
4
5
var s = 100;
document.querySelectorAll('a')[0].addEventListener('click', function(){
  s += 3;
  p.innerHTML = s;
})
https://jsfiddle.net/5xLLjjpm/1/
По-другому исхитриться вряд ли получится.
1
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
01.02.2017, 14:30
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE html>
<html>
<head>
  <title>Global scope</title>
  <meta charset="utf-8">
</head>
<body>
  <div id="s"></div>
  <a href="#" onclick="sum(3)">
    <span>  Нажать + 3 </span>
  </a>
  <a href="#" onclick="sum(30)">
    <span>  Нажать + 30 </span>
  </a>
  <script>
  var s = 100; // Создаём переменную
  sh = document.getElementById('s');
  sh.textContent = s;
  function sum(val) {
    s += val;
    sh.textContent = s;
  }
  </script>
</body>
</html>
1
2 / 2 / 0
Регистрация: 01.02.2017
Сообщений: 16
01.02.2017, 14:58  [ТС]
А можно сделать, чтоб объявление и функция были в другом документе (.js), а в этом остальное?..
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
01.02.2017, 15:14
Лучший ответ Сообщение было отмечено Katurina как решение

Решение

Katurina, можно
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
  <title>Global scope</title>
  <meta charset="utf-8">
</head>
<body>
  <div id="s"></div>
  <a href="#" onclick="sum(3)">
    <span>  Нажать + 3 </span>
  </a>
  <a href="#" onclick="sum(30)">
    <span>  Нажать + 30 </span>
  </a>
  <script src="script.js" charset="utf-8"></script>
</body>
</html>
JavaScript
1
2
3
4
5
6
7
var s = 100; // Создаём переменную
sh = document.getElementById('s');
sh.textContent = s;
function sum(val) {
  s += val;
  sh.textContent = s;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.02.2017, 15:14
Помогаю со студенческими работами здесь

Глобальная переменная не работает
сделал такой код &lt;html&gt;&lt;head&gt; &lt;script type=&quot;text/javascript&quot;&gt; var rs=1; function r1(){var rs=rs-1; if(rs&lt;1){var rs=3;}} ...

Глобальная переменная в функции
Вот пример кода из книги var scope = &quot;global&quot;; function f(){ console.log(scope); //Выведет &quot;undefined&quot;, а не &quot;global&quot; ...

Глобальная переменная - значит везде в окне!
Доброго времени суток. Возникла бооооольшая непонятка.: window.onload = function() { var profitem; ...

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru