2

私は問題があります...私は何が間違っているのですか?

以前に変数に保存されたセレクターを使用したい。アイデアは、オブジェクトの関数内でそれを使用することです。

var escribir = {
    obj:$('#cont'),
    algo: function(i) { 
        escribir.obj.html(i++);
        setTimeout('escribir.algo('+i+')',1000);
    }
}

$(document).ready(
    function(){
    escribir.algo(0);
    }
);

....
<div id="cont"></div>
4

3 に答える 3

1
var escribir = {
    obj : $('#cont'),
    algo : function (i) {
           |
           V
        escribir.obj.html(i++);
        setTimeout(function() { escribir.algo(i) }, 1000); // Don't use `eval`
    }
}

編集:ここでの作業例http://jsfiddle.net/elclanrs/sQdST/

于 2012-04-19T07:30:15.623 に答える
0

より良い形でクロージャーを利用した方が良いでしょう。

jQuery(function ($) {

    var escribir = {
        obj : $('#cont'),
        algo_counter : 0,
        algo : function () {
            escribir.obj.html(escribir.algo_counter++);
            setTimeout(escribir.algo, 1000);
        }
    };

    // optionally:
    // escribir.algo_counter = 10;

    escribir.algo();

}

setTimeoutこの方法では、のevalバージョンを使用していません。

于 2012-04-19T07:31:23.707 に答える
0

objは escribir のメンバーであるため次のように変更する必要がありますescribir.obj

var escribir = {
    obj:$('#cont'),
    algo: function(i) { 
        escribir.obj.html(i++); // without escribir.obj you will get reference error, otherwise you have a variable name obj.
        setTimeout('escribir.algo('+i+')',1000);
    }
}
于 2012-04-19T07:33:16.037 に答える