Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Сложение переменных в другой функции (https://javascript.ru/forum/jquery/37658-slozhenie-peremennykh-v-drugojj-funkcii.html)

inexwai 29.04.2013 22:19

Сложение переменных в другой функции
 
Помогите пожалуйста, есть три функции, работают как надо, после нажатия кнопки(а лучше вообще не нажимая кнопок) нужно взять значения из них (zn1,zn,zn2) и сложить их в другой функции. Как это сделать?
$(function(){
$('.delivery_list').click(function(){
$(".cities_list").slideToggle('fast');
});
$('ul.cities_list li').click(function(){
var tx = $(this).html();
var tv = $(this).attr('alt');
  var dl = parseInt(document.getElementById("dl").value);
  var sl = parseInt(document.getElementById("sl").value);
  var sh = parseInt(document.getElementById("sh").value);
$(".cities_list").slideUp('fast');
$(".delivery_list span").html(tx);
  $(".delivery_text").html(parseFloat(tv)*parseInt(dl)*parseInt(sl)/100*parseInt(sh));
var zn2 = parseFloat(tv)*parseInt(dl)*parseInt(sl)/100*parseInt(sh);
});
})

$(function(){
$('.delivery_list1').click(function(){
$(".cities_list1").slideToggle('fast');
});
$('ul.cities_list1 li').click(function(){
var tx1 = $(this).html();
var tv1 = $(this).attr('alt');
  var dl1 = parseInt(document.getElementById("dl1").value);
  var sl1 = parseInt(document.getElementById("sl1").value);
  var sh1 = parseInt(document.getElementById("sh1").value);
$(".cities_list1").slideUp('fast');
$(".delivery_list1 span").html(tx1);
$(".delivery_text1").html(parseFloat(tv1)*parseInt(dl1)*parseInt(sl1)/100*parseInt(sh1));
var zn2 = parseFloat(tv1)*parseInt(dl1)*parseInt(sl1)/100*parseInt(sh1);
});
})
$(function(){
$('.delivery_list2').click(function(){
$(".cities_list2").slideToggle('fast');
});
$('ul.cities_list2 li').click(function(){
var tx2 = $(this).html();
var tv2 = $(this).attr('alt');
  var dl2 = parseInt(document.getElementById("dl2").value);
  var sl2 = parseInt(document.getElementById("sl2").value);
  var sh2 = parseInt(document.getElementById("sh2").value);
$(".cities_list2").slideUp('fast');
$(".delivery_list2 span").html(tx2);
$(".delivery_text2").html(parseFloat(tv2)*parseInt(dl2)*parseInt(sl2)/100*parseInt(sh2));
var zn2 = parseFloat(tv2)*parseInt(dl2)*parseInt(sl2)/100*parseInt(sh2);
});
  
}) 
function addIt() {
document.getElementById("output").value = zn1+zn2+zn;
  }

cmd 30.04.2013 02:13

Вы бы упростили код, чтобы было понятно что Вам непонятно... А то навалили кучу... Вероятнее всего, Вам просто нужно почитать про зоны видимости переменных в js

ksa 30.04.2013 08:43

Цитата:

Сообщение от inexwai
zn1,zn

В твоем огрызке кода этим переменным даже значение не присваивается... :D

Цитата:

Сообщение от inexwai
zn2

Этой переменной хоть и присваивают значение но только таким образом
Цитата:

Сообщение от inexwai
var zn2 = ...

Значит она не видна вне функции, её объявившей...

skrudjmakdak 30.04.2013 11:33

ну как то так:

//как сказал cmd, упростим код. коменты в коде
$(document).ready(function(){
//------------
//jquery code

//создадим глобальные переменные
var zn2 = 0, zn1 = 0, zn = 0;

$('ul.cities_list li').click(function()
	{
	var tv = parseFloat($(this).attr('alt'));
	// document.getElementById("dl").value - вот это зачем?? если используем jquery, то это можно написать так: $("#dl").val()
	var dl = parseInt($("#dl").val());
	var sl = parseInt($("#sl").val());
	var sh = parseInt($("#sh").val());
	//коментарий по этому куску: parseFloat(tv)*parseInt(dl)*parseInt(sl)/100*parseInt(sh)
	//возьмем  например из этого куска вот это: parseInt(dl)
	// вы же уже писали parseInt выше.. не нужно это писать еще раз
	
	//$(".delivery_text").html(parseFloat(tv)*parseInt(dl)*parseInt(sl)/100*parseInt(sh)); - старый вариант
	
	//а вот ниже новый вариант
	var res = tv * dl * sl / 100 *sh; //сначала запишем в переменную
	$(".delivery_text").html(res); // - новый вариант
	
	zn = res;//var писать не нужно, они объявлены как глобальные
	addIt();
	});

$('ul.cities_list1 li').click(function()
	{//делаем все аналогично предыдущему
	var tv1 = parseFloat($(this).attr('alt'));
	var dl = parseInt($("#dl1").val());
	var sl = parseInt($("#sl1").val());
	var sh = parseInt($("#sh1").val());
	
	var res = tv1 * dl1 * sl1 / 100 *sh1;
	
	$(".delivery_text1").html(res);
	var zn1 = res;
	addIt();
	});

$('ul.cities_list2 li').click(function()
	{
	var tv2 = parseFloat($(this).attr('alt'));
	var dl = parseInt($("#dl2").val());
	var sl = parseInt($("#sl2").val());
	var sh = parseInt($("#sh2").val());
	
	var res = tv2 * dl2 * sl2 / 100 *sh2;
	
	$(".delivery_text2").html(res);
	var zn2 = res;
	addIt();
	});
  

function addIt()
	{
	$("#output").val(zn1 + zn2 + zn);
	}

//------------	
});


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