Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.04.2017, 19:39
Новичок на форуме
Отправить личное сообщение для Vlad_Gera Посмотреть профиль Найти все сообщения от Vlad_Gera
 
Регистрация: 16.01.2017
Сообщений: 5

Как сделать переменную функции onclick глобальной?
Есть такой работающий html код меню c радио кнопками и скрипт, показывающий значение выбранной по onclick радио кнопки в теле функции check(met), оператор alert('1 mtd= ' + mtd);. Проблема в том, что переменная mtd не видна за пределами функции check(met), хотя она объявлена как глобальная. Оператор return тоже не возвращает ее значение. Вопрос как сделать так чтобы переменную mtd можно было видеть во всем скрипте. Например, использовать в функции sum();. Конечно, если функцию sum() вложить в функцию check(met), то она будет работать, но хотелось бы чтобы все работало автономно. Извините за возможно не корректный вопрос.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-UTF-8"/>
<title>Gr</title>
</head>
<body>
<form id="mainForm" name="mainForm" action="">
<input id=gr1 type="radio" name="met" onclick="check(this.value)" value="1">
G-1<br>
<input id=gr2 type="radio" name="met" onclick="check(this.value)" value="2">
G-2<br>
<input id=gr3 type="radio" name="met" onclick="check(this.value)" value="3">
G-3<br>
<input id=gr4 type="radio" name="met" onclick="check(this.value)" value="4">
G-4<br>
<br>
</form>
<script>
var mtd;
function check(met) {
mtd = document.getElementById.value = met;
alert('1 mtd= ' + mtd);
return met;
}
alert('2 mtd= ' + mtd);
function sum() {
var x = mtd + 5;
alert('x=' + x);
}
sum();
</script>
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 27.04.2017, 08:51
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,127

Сообщение от Vlad_Gera
var mtd;
function check(met) {
mtd = document.getElementById.value = met;
alert('1 mtd= ' + mtd);
return met;
}
alert('2 mtd= ' + mtd);
function sum() {
var x = mtd + 5;
alert('x=' + x);
}
sum();
Ты имеешь представление как все это работает?
Ответить с цитированием
  #3 (permalink)  
Старый 27.04.2017, 09:37
Новичок на форуме
Отправить личное сообщение для Vlad_Gera Посмотреть профиль Найти все сообщения от Vlad_Gera
 
Регистрация: 16.01.2017
Сообщений: 5

Ты имеешь представление как все это работает?
К сожалению не очень, в этом то и проблема. И не нахожу где почитать. Да и о помощи попросил поэтому.
Ответить с цитированием
  #4 (permalink)  
Старый 27.04.2017, 09:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,127

Сообщение от Vlad_Gera
И не нахожу где почитать.
Да хоть бы тут
https://learn.javascript.ru/forms-submit

Видос даже есть...
https://www.youtube.com/watch?v=CFxMg5RAvvk
Ответить с цитированием
  #5 (permalink)  
Старый 27.04.2017, 10:05
Новичок на форуме
Отправить личное сообщение для Vlad_Gera Посмотреть профиль Найти все сообщения от Vlad_Gera
 
Регистрация: 16.01.2017
Сообщений: 5

Да хоть бы тут
Спасибо Ksa
Ответить с цитированием
  #6 (permalink)  
Старый 27.04.2017, 15:51
Новичок на форуме
Отправить личное сообщение для ermak20 Посмотреть профиль Найти все сообщения от ermak20
 
Регистрация: 26.12.2016
Сообщений: 6

Сделал так
<form id="mainForm" name="mainForm" action="#">
  <input id=gr1 type="radio" name="met" value="1">G-1
  <br>
  <input id=gr2 type="radio" name="met" value="2">G-2
  <br>
  <input id=gr3 type="radio" name="met" value="3">G-3
  <br>
  <input id=gr4 type="radio" name="met" value="4">G-4
  <br>
</form>
<script>
var form = document.getElementById("mainForm");
var mtd = document.getElementsByName("met");

form.addEventListener("click", function () {
   for (i = 0; i < mtd.length; i++) {
    if (mtd[i].checked) {
      alert("mtd = " + mtd[i].value);
      var x = +mtd[i].value + 5;
      alert("x = " + x);
    }
  }
});
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 27.04.2017, 16:25
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,127

Сообщение от ermak20
Сделал так
Вариант без цикла...

<form id="mainForm" name="mainForm" action="#">
  <input id=gr1 type="radio" name="met" value="1">G-1
  <br>
  <input id=gr2 type="radio" name="met" value="2">G-2
  <br>
  <input id=gr3 type="radio" name="met" value="3">G-3
  <br>
  <input id=gr4 type="radio" name="met" value="4">G-4
  <br>
</form>
<script>
document.getElementById("mainForm").addEventListener("click", function () {
	var mtd = document.querySelector('[name="met"]:checked');
	if (mtd) {
		alert("mtd = " + mtd.value);
		var x = +mtd.value + 5;
		alert("x = " + x);
	};
});
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Акардион меню из чекбоксов и списка, как сделать подсветку текущего элемента OliLoi jQuery 0 08.11.2016 08:15
Как сделать обёртку для функции? Артист Общие вопросы Javascript 17 21.10.2016 07:30
Как извлечь адрес картинки, указанный внутри функции onclick? sidarvik Events/DOM/Window 19 04.02.2013 01:05
Как передать элемент в переменную из функции kichSman jQuery 3 12.07.2011 22:16
Как сделать локальную переменную глобальной?? Дмитрий Общие вопросы Javascript 8 02.11.2010 03:33