2013-12-08 2 views
0

У меня есть функция для поиска, на которой плитки мышь на:Почему это значение равно 'undefined'? (JavaScript)

function testTile(mouseX, mouseY){ 
    if(mouseX<mapArray[0].length*20 && mouseY<mapArray.length*20){ 
     var tile = getTilePosition(mouseX-10, mouseY-10); 
     selectedtile.x = tile.xtile, 
     selectedtile.y = tile.ytile; 
    } 
} 

и функция для получения позиции плитки с учетом х и у

function getTilePosition(x, y){ 
    var xtile = Math.floor(x/20); 
    var ytile = Math.floor(y/20); 
return{ 
    xtile : xtile, 
    ytile : ytile 
    } 
} 

, но когда я называю selectedtile .x или selectedtile.y Я получаю значение «undefined». Что не так?

+6

Вы должны определить 'selectedtile' первым. – str

+1

О, черт возьми, я определил его как «var selectedtile» вместо «var selectedtile = {}». Исправлено! – user3050748

ответ

0

Похоже, что ваши значения объявлены внутри функции и выходят за рамки.

ли это:

var selectedtile = new Object() //de OUTSIDE All functions. 
//de this works too: var selectedtile = {} 

function testTile(mouseX, mouseY){ 
    if(mouseX<mapArray[0].length*20 && mouseY<mapArray.length*20){ 
     var tile = getTilePosition(mouseX-10, mouseY-10); 
     selectedtile.x = tile.xtile, 
     selectedtile.y = tile.ytile; 
    } 
} 

function getTilePosition(x, y){ 
    var xtile = Math.floor(x/20); 
    var ytile = Math.floor(y/20); 
    return { 
     xtile : xtile, 
     ytile : ytile 
    } 
} 
+0

Wait is 'var selectedtile = new Object ({})' any different from 'var selectedtile = {}'? – user3050748

+0

Хорошо, я вижу ваш комментарий выше. Это была проблема тогда ... не установка 'selectedtile' в Object, просто оставив его« null » – digitalextremist

+0

Почему вы используете' new Object ({}) 'вообще? Почему бы не сохранить его простым? Я думаю, что это более смущает, чем помогает. –

Смежные вопросы