0

私は OOP を学んでいますが、関数を使用して値を取得しようとすると、エラーがスローされることにすでに精通していると思います。しかし、今回は本当に困っています。id()関数を呼び出そうとすると、「予期しないトークン)」が表示され続けますplaceCards()appendChilds()

function GUI(player)
{
    for (var i = 0, j = arguments.length; i <= j; i++)
    {
        var display = document.createElement("div");
        id = function()
        {
            idElem = document.createElement("p");
            idElem.appendChild(document.createTextNode(
                                 player.name == "Player" ? "You" : "Casino"));
            return idElem;
        }

        placeCards = function()
        {
            for (var card = 0, totalCards = player.hand.length;
                 card <= totalCards;
                 card++)
                var cardElem = document.createElement("img");
                setAttributes(cardElem,
                {
                    "id" : (player.name == "Player" ? "player" : "casino")
                           + "Card" + card,
                    "class" : "card",
                    "src" : "images/Cards/Back.png",
                    "alt" : "Back of a card",
                    "title" : "Back of a card"
                });

                return cardElem;
            }
            appendChilds(display, {id(), placeCards()});
            table.appendChild(display);
        }
    }

    player = new Player("Player");
    GUI(player);

appendChilds 用に作成したヘルパー関数は次のとおりです。

function setAttributes(element, attributes)
{ 
    for (var key in attributes) { 
        element.setAttribute(key, attributes[key]); 
    }
}

当面の問題や、OOP を学習するための信頼できるリソースに関連するヘルプは大歓迎です。

4

2 に答える 2

1

{...}キーと値のペアを必要とするオブジェクト リテラルを定義します。あなたが持っているものは、で定義されている配列のように見えます[...]

于 2013-07-28T04:33:15.823 に答える
1

これはおそらくここにあります:

appendChilds(display, {id(), placeCards()});

何をしようとしているのかはわかりませんが、この構文は間違いなく正しくありません。

おそらく、キーと値のペアを取るオブジェクト リテラルが必要です。

appendChilds(display, {
    id: id(),
    cards: placeCards()
});

ただし、正確にどのキーを使用するかは、関数が何を期待しているかによって異なります。

それとも配列ですか?

appendChilds(display, [id(), placeCards()]);

また、あなたが言うその関数にappendChildsはラベルが付けられsetAttributesており、子を追加していないようです。そうですよね?

于 2013-07-28T04:33:38.567 に答える