Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перенести переменную из одной функции в другую (https://javascript.ru/forum/misc/60778-perenesti-peremennuyu-iz-odnojj-funkcii-v-druguyu.html)

EWB 19.01.2016 19:51

Перенести переменную из одной функции в другую
 
Не выходит перенести переменную из одной функции в другую. Другого пути пока не нашел.
Нужно из первой функции во вторую перенести переменную percent.

Заранее спасибо.

<body>
	Количество монет: <input id="gold" type="text" value="100000">
	<br/>
	<br/>
	Сумма(в рублях):
	<input id="result" value="367.5" type="text">
<script>
  var input =  document.getElementById('gold');
  var input2 =  document.getElementById('result');
  input.oninput = function () {
	var percent = ((input.value*3.5)/1000/100*5);
	input2.value = (input.value*3.5)/1000 + percent;    
  };
  input2.oninput = function() {
	input.value = (input2.value/3.5)*1000;    
  };
  
</script>
</body>

рони 19.01.2016 20:07

EWB,
обьявить percent вне функций?

EWB 19.01.2016 20:10

Таки да ))) Что-то я из ума выжил ))

EWB 19.01.2016 20:22

Хотя нет, тогда вычисления идут неправильные, ежели делаю так:
Мб я где-то с записью намудрил? Т.к. мне нужно чтобы процент рассчитывался от текущего числа в инпуте, а не от стандарта.

<body>
	Количество монет: <input id="gold" type="text" value="100000">
	<br/>
	<br/>
	Сумма(в рублях):
	<input id="result" value="367.5" type="text">
<script>
  var input =  document.getElementById('gold');
  var input2 =  document.getElementById('result');
  var percent = ((input.value*3.5)/1000/100*5);
  input.oninput = function () {	
	input2.value = (input.value*3.5)/1000 + percent;    
  };
  input2.oninput = function() {
	input.value = ((input2.value-percent)/3.5)*1000;    
  };
  
</script>
</body>

рони 19.01.2016 20:31

EWB,
алгоритм какой подсчёта?

EWB 19.01.2016 20:44

Берем данные что вводят в поле gold и транслируем их измененные в поле result. Все это происходит на лету. Т.е. пишем и в момент написания оно там подсчитывает и меняет все. С передачей из gold в result проблем нет. Но вот при обратной работе, когда передаем из result в gold то есть сложность, т.к. не получается поработать с процентом. Т.е. если в первом случае мы например написал 100 000
То рассчет такой:
(100 000*3.5)/1000 + percent; Где persent это:
((100 000*3.5)/1000/100*5);
Это мы передали из gold в result (в коде это первая функция)
Проблемы со второй, т.к. я туда не могу актуальный persent перенести. Ведь по нашей формуле от 100 000 persent это 17,5 (т.к. 100 000 в стандарте идет в value), и если этот persent вне функции первой, то туда не заходят измененные данные. Скажем, мы поставили 80 000, а persent если вне функции все равно идет от 100 000.

рони 19.01.2016 21:23

EWB,

:-?
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
	Количество монет: <input id="gold" type="text" value="100000">
	<br/>
	<br/>
	Сумма(в рублях):
	<input id="result" value="367.5" type="text">
<script>
  var input =  document.getElementById('gold');
  var input2 =  document.getElementById('result');
  input.oninput = function() {
    input2.value = (3.5 * input.value / 1000 + 3.5 * input.value / 1000 / 100 * 5).toFixed(2)
}
  input2.oninput = function() {
	input.value =  (input2.value / (3.5 / 1000 + 3.5 / 1000 / 100 * 5)).toFixed(0);
  };

</script>
</body>


</html>

EWB 19.01.2016 23:17

Большое спасибо, а что значит "toFixed"?

рони 19.01.2016 23:20

EWB,
Количество цифр после десятичного знака
http://javascript.ru/Number/toFixed


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