1

私はこのコードを持っています:

function get_id_from_coords (x, y)
{
    x = parseInt(x);
    y = parseInt(y);

    if (x < 0)
    {
        x = (x + 6) * 60;
    }
    else
    {
        x = (x + 5) * 60;
    }
    if (y < 0)
    {
        y = (y + 6) * 60;
    }
    else
    {
        y = (y + 5) * 60;
    }

    $('#planets').children().each(function(){
        if ($(this).attr('x') == x) {
            if ($(this).attr('y') == y) {
                alert (parseInt($(this).attr('id')));
                return parseInt($(this).attr('id'));
            }
        }
    });
}
alert(get_id_from_coords(x, y));

ただし、このコードから 2 つのポップアップが表示されます。まず、関数内から適切な値 (63 など) を取得しますが、戻り値を警告すると、未定義になります。

4

1 に答える 1

6

関数が返されないため、未定義になります。最後のステートメントはeach関数の呼び出しであり、ステートメントではありませんreturn。あなたがリターンを置く場合、例えば

...
return $('#planets').children().each(function(){
    if ($(this).attr('x') == x) {
        if ($(this).attr('y') == y) {
            alert (parseInt($(this).attr('id')));
            return parseInt($(this).attr('id'));
        }
    }
});

それは何かを返します-この場合、ドキュメントに基づいています:

の子を返し#planetsます。

特にを使用して値を見つけたい場合はeach、次のようにすることができます。

...
val toRet;
$('#planets').children().each(function(){
    if ($(this).attr('x') == x) {
        if ($(this).attr('y') == y) {
            toRet = parseInt($(this).attr('id'));
        }
    }
});
return toRet;
于 2012-04-09T23:44:30.537 に答える