Javascript.RU

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

Помогите найти ошибку.
Добрый день.
При выборе определенной опции товара, стоимость этой опции должна прибавляться к исходной стоимости товара. Но вместо этого пишет Nan

Вот скрипт

var price = 0;    
    $.each( msoptionsprice, function( key, value ) {
        var ajson = msoptionsprice[key] != "" ? jQuery.parseJSON(msoptionsprice[key]) : {};
      
        $('select[name="options['+key+']"]').change(function() {
            var price = 0; 
            var priceCheched = 0;
            var priceSelect = 0;
            var spval = $(this).val();
            if (spval == 0) return false;
            
            $.each( msoptionsprice, function( key, value ) {
                var ajson = msoptionsprice[key] != "" ? jQuery.parseJSON(msoptionsprice[key]) : {};
                $.each( $('input[name^="options['+key+']"]:checkbox:checked'), function( key, value ) {
                    if ($(this).attr('data-count')) {
                        priceCheched += parseInt(ajson[$(this).val()]['price']) * parseInt($(this).attr('data-count'));
                    } else {
                        priceCheched += parseInt(ajson[$(this).val()]['price']);
                    }
                });
                $.each( $('input[name="options['+key+'][]"]:radio:checked'), function( key, value ) {
                    if (ajson[$(this).val()]) {
                        priceCheched += parseInt(ajson[$(this).val()]['price']);
                    }
                });
                $.each( $('select[name="options['+key+']"] option:selected'), function( key, value ) {
                    if (ajson[$(this).val()]) {
                        priceSelect += parseInt(ajson[$(this).val()]['price']);
                    }
                });
                price = parseInt(priceCheched) + parseInt(priceSelect); 
                
            });
            $('.pr_change').html(parseInt(price));
        });
        
        $('input[name^="options['+key+']"]').change(function() {
            var price = 0;   
            var priceCheched = 0;
            var priceSelect = 0;
            var spval = $(this).val();
            if (spval == 0) return false;
            
            $.each( msoptionsprice, function( key, value ) {
                
                var ajson = msoptionsprice[key] != "" ? jQuery.parseJSON(msoptionsprice[key]) : {};
                
                $.each( $('input[name^="options['+key+']"]:checkbox:checked'), function( key, value ) {
                    if (ajson[$(this).val()]) {
                        if ($(this).attr('data-count')) {
                            priceCheched += parseInt(ajson[$(this).val()]['price']) * parseInt($(this).attr('data-count'));
                        } else {
                            priceCheched += parseInt(ajson[$(this).val()]['price']);
                        }
                    }
                });
                $.each( $('input[name="options['+key+'][]"]:radio:checked'), function( key, value ) {
                    if (ajson[$(this).val()]) {
                        priceCheched += parseInt(ajson[$(this).val()]['price']);
                    }
                });
                $.each( $('select[name="options['+key+']"] option:selected'), function( key, value ) {
                    if (ajson[$(this).val()]) {
                        priceSelect += parseInt(ajson[$(this).val()]['price']);
                    }
                });
                
                price = parseInt(priceCheched) + parseInt(priceSelect); 
            });
            $('.pr_change').html(parseInt(price));
        });
        
        $('span.minus, span.plus').click(function() {
            var input = $(this).closest('.count').find('input[name^="options['+key+']"]');
            
            
            if ( $(this).hasClass("plus") ) {
                $(input).attr('data-count', parseInt(input.attr('data-count')) + parseInt(1));
        	} else if ( $(this).hasClass("minus") ) {
        	    $(input).attr('data-count', parseInt(input.attr('data-count')) - parseInt(1));
        	}
        	
        	if ($(input).attr('data-count') > 0) {
                $(this).closest('.count').find('input[name^="options['+key+']"]').attr('checked', true);
            } else {
                $(this).closest('.count').find('input[name^="options['+key+']"]').attr('checked', false);
            }
            $('input[name^="options['+key+']"]').change();
            
            /*$(this).closest('.count').find('input[name="options['+key+'][]"]').attr('checked', true);
            $('input[name="options['+key+'][]"]').change();*/
            
            console.log($(this).closest('.count').find('input[name^="options['+key+']"]'));
            //console.log($(this).closest('.count').find('input[name="count"]').val());
            /*if ($(this).closest('.count').find('input[name="count"]').val() > 0) {
                $(this).closest('.count').find('input[name="options['+key+'][]"]').attr('checked', true);
            } else {
                $(this).closest('.count').find('input[name="options['+key+'][]"]').attr('checked', false);
            }*/
        });
        
        
        /* if (ajson[$('select[name="options['+key+']"] option:selected').val()]) {
            price = parseInt(price) + parseInt(ajson[$('select[name="options['+key+']"] option:selected').val()]['price']);
        } */
        
        

    });
Ответить с цитированием
  #2 (permalink)  
Старый 01.06.2016, 01:46
Аватар для Botik21
Аспирант
Отправить личное сообщение для Botik21 Посмотреть профиль Найти все сообщения от Botik21
 
Регистрация: 01.06.2016
Сообщений: 87

Данных не достаточно. Код ужасный, списка элементов нет – ни кто разбираться не будет.
Не понятно что в msoptionsprice – может там не число приходит, может поля нужного нет, может там значение не верное, да и в таком коде вполне может быть ошибка.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery ajax - помогите найти ошибку malefikus13 Общие вопросы Javascript 9 12.08.2015 13:36
Помогите найти ошибку shureg Общие вопросы Javascript 4 01.05.2014 16:27
Помогите найти ошибку в вёрстке OlegALL (X)HTML/CSS 1 03.02.2014 11:58
Помогите найти ошибку в простом скрипет Mekasan Общие вопросы Javascript 3 05.08.2013 12:02
Помогите найти ошибку((( hacker_007 Общие вопросы Javascript 5 28.01.2011 17:37