JavaScript selalu mengembalikan nilai true meskipun sebenarnya tidak

Ini mungkin masalah JavaScript paling aneh yang pernah ada:

$('div.GiftContainer').live('click', function () {
    var self = $(this);
    var price = $(this).attr('data-price');
    if (!self.hasClass('selected')) {
        if (price <= MyCredits) { // always returns true
            alert('OK');
            self.addClass('selected').siblings().removeClass('selected');
        } else {
            alert('MOO!');
        }
    } else {
        self.removeClass('selected');
    }
});

Mengembalikan nilai benar bahkan ketika saya menambahkan console.log(price + ' ' + MyCredits); tepat sebelum kondisi dan harga lebih kecil dari MyCredits.

Apa yang bisa terjadi...


person user1027620    schedule 02.02.2012    source sumber
comment
Sudahkah Anda mencoba parseInt, atau salah satu fungsi dari keluarga itu? Mungkin menguraikannya sebagai string, atau semacamnya.   -  person Tango Bravo    schedule 02.02.2012
comment
ya, sudah diperbaiki :) tolong jawab pertanyaan saya agar saya dapat menandainya sebagai jawaban yang diterima. Terima kasih!   -  person user1027620    schedule 02.02.2012
comment
Apakah MyCredits berupa string atau angka?   -  person Mathias Bynens    schedule 02.02.2012


Jawaban (3)


Coba parseInt(). Itu harus memperbaikinya untuk memastikan bahwa mereka ditafsirkan dengan benar oleh JS.

person Tango Bravo    schedule 02.02.2012

Ada tipe dalam JavaScript. Ini bisa membingungkan karena ini adalah bahasa yang dinamis. Coba yang berikut ini untuk memastikan kedua nilai adalah numbers:

if (parseInt(price, 10) <= parseInt(MyCredits, 10))

Berikut beberapa informasi lebih lanjut: http://en.wikibooks.org/wiki/JavaScript/Variables_and_Types

person Paul    schedule 02.02.2012

harga lebih kecil dari MyCredits

Kalau begitu, price <= MyCredits benar. Jadi tidak ada yang salah.

person Niet the Dark Absol    schedule 02.02.2012