переменные javascript, возвращающиеся как неопределенные - PullRequest
0 голосов
/ 09 декабря 2011

В данный момент я работаю с некоторым javscript, основной мыслительный процесс которого заключается в том, что, когда вы нажимаете ссылку и эта ссылка создает и вносит в корзину, я в настоящее время регистрирую то, что отправляется в корзину в моей консоли.Когда я нажимаю на ссылку, она вызывает функцию additem(),

function additem(desc,price,quantity)
    {

        var x = items.length - 1;
        var found = (x == 0);
        var y = new Item(desc,price,parseInt(quantity));
        console.log(y);
        var z = y;

        while((x != 0) && (found == false))
        {
            z = items[x];

            if(z != null)
            {
                if(z.M_desc == desc)
                {
                    found = true;
                }
                else
                {
                    x--;
                }
            }
            else
            {
                x--;
            }
        }

        if(found == false)
        {
            items[++numitems] = y;
        }
        else
        {
            items[x].M_quantity += quantity;
        }

        updatecart();
    }

. В консоли я вижу следующее:

Item { M_desc="Item 2", M_price="10", M_quantity=1}

, однако, когда я нажимаю на нее, я получаюследующее,

M_desc
    "Item 2"

M_price
    "10"

M_quantity
    undefined

Как M_quantity может быть 1 и затем неопределенным в другом представлении консоли?

===== РЕДАКТИРОВАТЬ =====

Я думаю,проблема возникает здесь, мой код JS начинается со строки.

var items = new Array(2);

, теперь я предполагаю, что это создает новый массив, так как при запуске console.log(items) сразу после него я получаю [undefined, undefined].

additem вызывается по щелчку ссылки с использованием следующего кода:

HTML

<a class='product' rel='"+category[i].product[j].price+"' href=''>"+ category[i].product[j].description + "</a>

JS

$('.product').live("click",function(e){
    additem($(this).text(), $(this).attr('rel'), 1);
e.preventDefault();
});

Это когда возникают проблемыitems[x] всегда либо равно нулю, либо не определено.и я не уверен почему.

1 Ответ

0 голосов
/ 09 декабря 2011

Ваша функция updatecart вызывается почти одновременно.items[i].M_quantity = $('input[name="qty"]').val() - проблемная строка.Ввод нулевой и заменяет ваше количество неопределенным.

...