dopatraman
dopatraman

Reputation: 13908

manipulating properties of instances

Here is my code:

var Placemat = function(id,id2,id3) {
    this.bucket = "";
    this.result = 0;
    this.bucketvalue = 0;
    this.total = 0;
    this.light = 0;
    this.deal = function() {
        var card1 = deck.shift();
        var card2 = deck.shift();
        this.hand = document.getElementById(id2);
        this.hand.innerHTML = card1.num + " of " + card1.suit + ", " + card2.num + " of " + card2.suit;

        if (card1.num == "Ace" && card2.value == "Ace") {
            card1.value = 11;
        }

        this.result = this.result + card1.value + card2.value;
        this.total = this.result;

        totalplayer = totalplayer + 1;

        return this.total;
    };
    this.hit = function() {
        this.light++;
        var card3 = deck.shift();
        var nhand = ", " + card3.num + " of " + card3.suit;
        this.bucket = this.bucket + nhand;
        this.bucketspace = document.getElementById(id3);
        this.bucketspace.innerHTML = this.bucket;
        this.bucketvalue = this.bucketvalue + card3.value;
        this.total = this.total + this.bucketvalue;

        if (this.total > 21) {
            totaldone = totaldone + 1;

            alert("Bust! By " + nhand);
            refresh();
        };

        if (this.light == 3) {
            alert("5 Card Blackjack! You win!");
            refresh();
        };

        return this.total;
    };
    this.stay = function() {
        this.player = document.getElementById(id);
        this.player.style.backgroundColor = "gray";
        this.player.innerHTML = "Stayed at " + this.total;

        totaldone = totaldone + 1;
    };
};

I make two instances of the Constructor here:

var d_placemat = new Placemat(param1,param2);
var tl_placemat = new Placemat(param3,param4);

And I call them here:

function compare() {
            if (d_placemat.total > tl_placemat.total) {
                alert("Dealer beats TL!");
                refresh();
            }
            else {
                alert("TL beats Dealer!");
                refresh();
            }
        };
    };

For some reason, I cannot access d_placemat.total and tl_placemat.total in compare(), even though they are assigned values earlier in the program and are both contained within the Constructor. Does anyone know what is wrong here?

Upvotes: 0

Views: 52

Answers (1)

jfriend00
jfriend00

Reputation: 707326

If you fix up the bracing in your compare function, it seems to work for me here: http://jsfiddle.net/jfriend00/wnzz8/ and there is access to the two total values as you are expecting.

function compare() {
    if (d_placemat.total > tl_placemat.total) {
        alert("Dealer beats TL!");
    }
    else {
        alert("TL beats Dealer!");
    }
}

P.S. I also removed the refresh() calls because I don't know what they did and you didn't provide the code for them.

Upvotes: 1

Related Questions