javascript indexOf总是返回-1

时间:2013-08-30 03:27:32

标签: javascript indexof

制作(跛脚)游戏,我想检查所选方块是否包含怪物,但是我的indexOf保持返回-1。相关代码如下。

intialization:

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)

(link here if above code isnt enough),我非常难过。(当然为什么我会在这里)

2 个答案:

答案 0 :(得分:4)

trigger.id可能会返回一个字符串,其数组中包含数字。

This jsfiddle显示了在操作中以及使用数字以及如何使用parseInt()将字符串ID转换为数字。

答案 1 :(得分:1)

试试这个

 if ( monsterPositions.indexOf(Number(trigger.id)) >== 0 )
相关问题