| 
	| 
	
	| 
		
	| 
			
			 
			
				30.06.2018, 21:44
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 30.06.2018 
						Сообщений: 5
					 
		
 |  |  
	| 
				Передача значения переменной - JavaScript
			 Всем привет, изучаю джаваскрипт и столкнулся с проблемой, не могу передать значение с одного фала в другой. 
Собственно сам код выложу ниже, в чем суть проблему , есть перменная "values" - сумма всех товаров в рублях, ее нужно передать в форму оплаты Яндекс Денег , то есть вот сюда
 
<input id="target" type="text" readonly name="sum">
 
Пробовал передавать таким способом 
 
input = document.getElementById('target'); 
target.value =values;"
но ничего не вышло, хотя если я этот код прикреплю в начале файла в таком виде
 
values = 0;
input = document.getElementById('target'); 
target.value =values;"
то все работает отлично, может я как-то с областью видимости косячу, код привожу ниже? Заранее спасибо.
 
var cart = {};
 
function loadCart(){
    if(localStorage.getItem('cart')){
        cart = JSON.parse(localStorage.getItem('cart'));
       
       showCart();
        
    }
    else {
        $('.main-cart').html('Корзина пуста!');
    }
 
   function showCart(){
    if(!isEmpty(cart))
    {
        $('.main-cart').html('Корзина пуста!');
    }
    else{     
    $.getJSON('goods.json', function (data){
        var goods = data;
        var out = '';
        var values = 0;   
        for(var id in cart){
            values += goods[id].cost * cart[id];
            out += `  <button data-id="${id}" class="del-goods">x</button>    `;
            out += `<img src="img\\${goods[id].img}">`;
            out += `${goods[id].name}`;
            out += `  <button data-id="${id}" class="minus-goods">-</button>  `;
            out += `${cart[id]}`;
            out += `  <button data-id="${id}" class="plus-goods">+</button>   `;
            out += cart[id]*goods[id].cost; //цена за один товар
                    
            out += '</br>';
        }
 
        $('.main-cart').html(out);
        $('.sums').html(`Общая самма товаров: ${values} рублей.`);
        $('.del-goods').on('click', delGoods);
        $('.plus-goods').on('click', PlusGoods);
        $('.minus-goods').on('click', MinusGoods);
        
       
    });
   }
}
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				30.06.2018, 21:53
			
			
			
		 |  
	| 
		
			|  | Тлен       |  | 
					Регистрация: 02.01.2010 
						Сообщений: 6,601
					 
		
 |  |  
	| Используя var внутри function вы делаете переменную доступной только локально  внутри function.
 
var x = 1;
//тут дотупно x
function a(){
  var y = 2;
  //тут дотупно x, y
  function b(){
    var z = 3;
    //тут дотупно x, y, z
    function c(){
      //тут дотупно x, y, но z == undefinded, т.к. ниже использовано var и объявлена локальная z
      var z = 100500;       
      //тут дотупно x, y, z, где z == 100500, но это никак не влияет на z которая "выше", та всё ещё равна 3, но отсюда уже напрямую не доступна
    }
  }
}
				__________________ 29375, 35
			 Последний раз редактировалось Aetae, 30.06.2018 в 21:58.
 |  |  
	| 
		
	| 
			
			 
			
				30.06.2018, 22:05
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 30.06.2018 
						Сообщений: 5
					 
		
 |  |  
	| Aetae, 
 Спасибо, объявил переменную в начале файла + добавил присваивание значения самой переменной, но все равно ничего не вышло((
 
var cart = {};
var values = 0;
function loadCart(){
    if(localStorage.getItem('cart')){
        cart = JSON.parse(localStorage.getItem('cart'));
       
       showCart();
        
    }
    else {
        $('.main-cart').html('Корзина пуста!');
    }
   function showCart(){
    if(!isEmpty(cart))
    {
        $('.main-cart').html('Корзина пуста!');
    }
    else{     
    $.getJSON('goods.json', function (data){
        var goods = data;
        var out = '';
          
        for(var id in cart){
            values += goods[id].cost * cart[id];
            out += `  <button data-id="${id}" class="del-goods">x</button>    `;
            out += `<img src="img\\${goods[id].img}">`;
            out += `${goods[id].name}`;
            out += `  <button data-id="${id}" class="minus-goods">-</button>  `;
            out += `${cart[id]}`;
            out += `  <button data-id="${id}" class="plus-goods">+</button>   `;
            out += cart[id]*goods[id].cost; //цена за один товар
                    
            out += '</br>';
        }
        $('.main-cart').html(out);
        $('.sums').html(`Общая самма товаров: ${values} рублей.`);
        $('.del-goods').on('click', delGoods);
        $('.plus-goods').on('click', PlusGoods);
        $('.minus-goods').on('click', MinusGoods);
        
        input = document.getElementById('target'); //-----> добавил для передачи значения
        target.value = values;  //-----> добавил для передачи значения
    });
   }
}
       
   
        function delGoods()
        {
            var id = $(this).attr('data-id');
            delete cart[id];
            saveCart();
            showCart();
        }
        function PlusGoods()
        {
            var id = $(this).attr('data-id');
            cart[id]++;
            saveCart();
            showCart();
        }
        function MinusGoods()
        {
            var id = $(this).attr('data-id');
            if(cart[id] == 1)
            {
                delete cart[id];
            }
          else{
            cart[id]--; 
          }
            saveCart();
            showCart();
        }
        function saveCart() {
            //сохраняем корзину
            localStorage.setItem('cart', JSON.stringify(cart));
        }
        function isEmpty(object) {
            for(var key in object)
            if(object.hasOwnProperty(key)) return true;
            return false;
        }
}
function sendSum(){
    input = document.getElementById('target');
    target.value = values;
   
}
$(document).ready(function(){
    loadCart();
    $('.sendSum').on('click', sendSum);
});
 
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				30.06.2018, 22:37
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| 
	
 
	| Сообщение от Awrek |  
	| target.value = values; |  
	
 
input.value = values
 |  |  
	| 
		
	| 
			
			 
			
				30.06.2018, 23:00
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 30.06.2018 
						Сообщений: 5
					 
		
 |  |  
	| рони, 
 Спасибо исправил, но к сожалению значение он все равно не передает. 
вывести нужно в id = "target" значение values, уже все перебрал, но решение так и не смог найти
 
<input type="radio" name="paymentType" value="PC">Яндекс.Деньгами</input>
 <input type="radio" name="paymentType" value="AC">Банковской картой</input>
 <input type="radio" name="paymentType" value="MC">С мобильного телефона</input>
 <input type="hidden" name="successURL" value="http://sait.info/success.php"></input>
 <input type="text" name="label" placeholder="Логин">
 <input id="target" type="text" readonly name="sum">
 <input type="submit" name="submit-button" value="Перевести">
 
var cart = {};
var values = 0;
function loadCart(){
    if(localStorage.getItem('cart')){
        cart = JSON.parse(localStorage.getItem('cart'));
       
       showCart();
        
    }
    else {
        $('.main-cart').html('Корзина пуста!');
    }
   function showCart(){
    if(!isEmpty(cart))
    {
        $('.main-cart').html('Корзина пуста!');
    }
    else{     
    $.getJSON('goods.json', function (data){
        var goods = data;
        var out = '';
          
        for(var id in cart){
            values += goods[id].cost * cart[id];
            out += `  <button data-id="${id}" class="del-goods">x</button>    `;
            out += `<img src="img\\${goods[id].img}">`;
            out += `${goods[id].name}`;
            out += `  <button data-id="${id}" class="minus-goods">-</button>  `;
            out += `${cart[id]}`;
            out += `  <button data-id="${id}" class="plus-goods">+</button>   `;
            out += cart[id]*goods[id].cost; //цена за один товар
                    
            out += '</br>';
        }
        $('.main-cart').html(out);
        $('.sums').html(`Общая самма товаров: ${values} рублей.`);
        $('.del-goods').on('click', delGoods);
        $('.plus-goods').on('click', PlusGoods);
        $('.minus-goods').on('click', MinusGoods);
        
        input = document.getElementById('target'); //-----> добавил для передачи значения
        input.value = values;  //-----> добавил для передачи значения
    });
   }
}
 
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				30.06.2018, 23:15
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| Awrek,может вы не учитываите, что values формируется после ответа сервера?
 $('.sums').html(`Общая самма товаров: ${values} рублей.`);  -- это работает?
 |  |  
	| 
		
	| 
			
			 
			
				30.06.2018, 23:35
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 30.06.2018 
						Сообщений: 5
					 
		
 |  |  
	| рони,Да, это работает отлично.
 |  |  
	| 
		
	| 
			
			 
			
				30.06.2018, 23:55
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| Awrek,
 
$('[name="sum"]').val(values);
вместо  
	
 
	| Сообщение от Awrek |  
	| input = document.getElementById('target'); //-----> добавил для передачи значения45        input.value = values;  //-----> добавил для передачи значения |  
	
 |  |  
	| 
		
	| 
			
			 
			
				01.07.2018, 00:18
			
			
			
		 |  
	| 
		
			
			| Новичок на форуме       |  | 
					Регистрация: 30.06.2018 
						Сообщений: 5
					 
		
 |  |  
	| рони, 
 Переделал, но к сожалению опять не вышло    
function showCart(){
    if(!isEmpty(cart))
    {
        $('.main-cart').html('Корзина пуста!');
    }
    else{     
    $.getJSON('goods.json', function (data){
        var goods = data;
        var out = '';
       
        for(var id in cart){
            values += goods[id].cost * cart[id];
            out += `  <button data-id="${id}" class="del-goods">x</button>    `;
            out += `<img src="img\\${goods[id].img}">`;
            out += `${goods[id].name}`;
            out += `  <button data-id="${id}" class="minus-goods">-</button>  `;
            out += `${cart[id]}`;
            out += `  <button data-id="${id}" class="plus-goods">+</button>   `;
            out += cart[id]*goods[id].cost; //цена за один товар
                    
            out += '</br>';
        }
        $('.main-cart').html(out);
        $('.sums').html(`Общая самма товаров: ${values} рублей.`);
        $('.del-goods').on('click', delGoods);
        $('.plus-goods').on('click', PlusGoods);
        $('.minus-goods').on('click', MinusGoods);
        $('[name="sum"]').val(values);
      //  input = document.getElementById('target'); //-----> добавил для передачи значения
       // input.value = values;  -----> добавил для передачи значения
    });
   }
}
 
			
			
	
			
			
			
			
			
				  |  |  
	| 
		
	| 
			
			 
			
				01.07.2018, 07:23
			
			
			
		 |  
	| 
		
			|  | Профессор       |  | 
					Регистрация: 27.05.2010 
						Сообщений: 33,150
					 
		
 |  |  
	| Awrek,а если строку 29 перенести в строку 23?
 |  |  
 
 
 
 |  |