Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как сделать переменную функции onclick глобальной? (https://javascript.ru/forum/dom-window/68612-kak-sdelat-peremennuyu-funkcii-onclick-globalnojj.html)

Vlad_Gera 26.04.2017 19:39

Как сделать переменную функции 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>

ksa 27.04.2017 08:51

Цитата:

Сообщение от 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();

Ты имеешь представление как все это работает?

Vlad_Gera 27.04.2017 09:37

Ты имеешь представление как все это работает?
 
К сожалению не очень, в этом то и проблема. И не нахожу где почитать. Да и о помощи попросил поэтому.

ksa 27.04.2017 09:48

Цитата:

Сообщение от Vlad_Gera
И не нахожу где почитать.

Да хоть бы тут
https://learn.javascript.ru/forms-submit

Видос даже есть...
https://www.youtube.com/watch?v=CFxMg5RAvvk

Vlad_Gera 27.04.2017 10:05

Да хоть бы тут
 
Спасибо Ksa

ermak20 27.04.2017 15:51

Сделал так
<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>

ksa 27.04.2017 16:25

Цитата:

Сообщение от 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>


Часовой пояс GMT +3, время: 11:01.