Javascript.RU

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

Сложение переменных в другой функции
Помогите пожалуйста, есть три функции, работают как надо, после нажатия кнопки(а лучше вообще не нажимая кнопок) нужно взять значения из них (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;
  }
Ответить с цитированием
  #2 (permalink)  
Старый 30.04.2013, 02:13
Аватар для cmd
cmd cmd вне форума
Профессор
Отправить личное сообщение для cmd Посмотреть профиль Найти все сообщения от cmd
 
Регистрация: 19.03.2011
Сообщений: 177

Вы бы упростили код, чтобы было понятно что Вам непонятно... А то навалили кучу... Вероятнее всего, Вам просто нужно почитать про зоны видимости переменных в js
__________________
Cogito, ergo sum
Ответить с цитированием
  #3 (permalink)  
Старый 30.04.2013, 08:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от inexwai
zn1,zn
В твоем огрызке кода этим переменным даже значение не присваивается...

Сообщение от inexwai
zn2
Этой переменной хоть и присваивают значение но только таким образом
Сообщение от inexwai
var zn2 = ...
Значит она не видна вне функции, её объявившей...
Ответить с цитированием
  #4 (permalink)  
Старый 30.04.2013, 11:33
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

ну как то так:

//как сказал 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);
	}

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

Последний раз редактировалось skrudjmakdak, 30.04.2013 в 11:44.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отследить событие произошло оно или нет в другой функции jei Общие вопросы Javascript 14 07.04.2013 12:57
Эффект статических переменных в функции jsjob Общие вопросы Javascript 6 12.03.2013 18:58
Как вызвать eval в контексте другой функции для доступа к ее локальным переменным? Почемучкин Общие вопросы Javascript 8 29.10.2012 22:31
Проверить данные в функции, которая работает с другой функцией. Andrej_2 Общие вопросы Javascript 5 27.09.2012 22:42
Передача функции другой функции ntro123 jQuery 3 20.02.2011 12:15