-1
各カードには、 "card player1card ________"または "card player2card _______"のクラス名があり、空白はカード名配列から割り当てられたランダムクラス名です。forループクラス名内の "if文"が定義されていません
すべてのカードをチェックし、それらのクラスが「card player1card」に変更されたplayer1cardであることを確認し、カード名配列から更新されたクラスを取得し、player2cardでも同様にします。
すべての変数は事前定義されています。
var cardsnames = ["recruitbuilder", "allwood", "cabin", "messhall", "mast", "captainsquarters", "schooner", "brig", "frigate", "shipballista", "ram", "crowsnest", "spoondrill", "reinforcements", "recruitgunman", "allgunpowder", "firebarrel", "fireship", "roundshot", "heavyshot", "swivelgun", "chainshot", "mortar", "barrage", "resupply", "smuggler", "blockade", "mutiny", "recruitmerchant", "allgold", "addwood", "addgunpowder", "addgold", "removewood", "removegunpowder", "removegold", "byzantinefire", "slaves", "mercenaries", "ironplating", "coercion", "ascension"];
var w;
var allocatedcard;
var card = document.getElementsByClassName("card");
for (w = 0; w < card.length; w++) {
if (document.getElementsByClassName("card")[w].className.match('player1card')) {
this.className = "card player1card";
var allocatedcard = Math.floor(Math.random() * cardsnames.length);
this.className += " " + cardsnames[allocatedcard];
updateimages();
} else if (document.getElementsByClassName("card")[w].className.match('player2card')) {
this.className = "card player2card";
var allocatedcard = Math.floor(Math.random() * cardsnames.length);
this.className += " " + cardsnames[allocatedcard];
updateimages();
}
}
なぜあなたはループで再びフェッチしていますか?単に 'card [w] .className'を使用してください。また、私は 'card [w] .classList.indexOf( 'player1card')' – Rajesh
を申し訳ありません.Jajascriptで最も経験が豊富ではありません。詳しくは説明できますか? – evilgenious448
'document.getElementsByClassName'はあなたにリストを返しますそれは 'card'に保存されています。その中の要素にアクセスしたいとします。理想的な方法は、リストを何度も何度も取り出す代わりに、リストからアクセスすることです。 DOMのやり取りは非常に高価で、最小限に抑える必要があります。また、 'classList'は' DOMTokenList'(構造体のような配列)を返し、簡単に検索することができます。文字列マッチングよりも優れています(* className.match *) – Rajesh