2

(不自由な) ゲームを作成し、選択した正方形にモンスターが含まれているかどうかを確認したいのですが、indexOf が -1 を返し続けます。以下の関連コード。

初期化:

var monsters = [];

var monsterPositions = [2,8,13,15,22];

var player = { "currentPosition": 0 };

for ( var i in monsterPositions ) {
    monsters[i] = new createMonster("monster",monsterPositions[i],1); }

function createMonster(name,startingPoint,level) {
    this.currentPosition = startingPoint; }

<td>onclickでトリガーされる関数:

function processClick(trigger){
    console.log( trigger.id + " " + monsterPositions );
    if ( monsterPositions.indexOf(trigger.id) >= 0 ){
        if ( !fight( findMonster( parseInt( trigger.id ) ) ) ){
            return;
        }
    }
    if ( gameOn ) move( parseInt( trigger.id ) );
}

move()モンスタースポットの場合でも、ページは常に に直接移動しconsole.log()ます。結果は次のとおりです。

1 2,8,13,15,22 adventure.js (line 79)
2 2,8,13,15,22 adventure.js (line 79)
7 2,8,13,15,22 adventure.js (line 79)
8 2,8,13,15,22 adventure.js (line 79)
13 2,8,13,15,22 adventure.js (line 79)
18 2,8,13,15,22 adventure.js (line 79)
23 2,8,13,15,22 adventure.js (line 79)
22 2,8,13,15,22 adventure.js (line 79)
21 2,8,13,15,22 adventure.js (line 79)
20 2,8,13,15,22 adventure.js (line 79)
15 2,8,13,15,22 adventure.js (line 79)

(上記のコードでは不十分な場合はここにリンクしてください)、そして助けてください。(もちろん、他の理由で私はここにいるでしょう)

4

2 に答える 2

5

trigger.idおそらく、配列が数字でいっぱいの文字列を返しています。

この jsfiddleは、実際の動作と Number の操作、および を使用して文字列 ID を数値に変換する方法を示していますparseInt()

于 2013-08-30T03:34:40.997 に答える
1

これを試して

 if ( monsterPositions.indexOf(Number(trigger.id)) >== 0 )
于 2013-08-30T03:31:54.500 に答える