0

「onclick」オプションのあるテーブルとフィールドがあります。

<td class="name" onclick="ajax_update_entries('<?php echo $field['Player']['name']; ?>')">

関数を呼び出します:

function ajax_update_entries(player_name)
  {
  $.post('http://mysite.com/entries/get_entries/' + player_name, function(data)
    {
    $('#gameText').html(data);
    });
  setTimeout('ajax_update_entries(player_name)', 30000);
  }

それが非常に良いことは、テーブルフィールドをクリックした後に要求されたページに行くことです。それが非常に間違っているのは、それを更新する必要があるsetTimeoutの「player_name」パラメーターを認識しないことです。Operaコンソールでは、次のように返されます。

キャッチされない例外:ReferenceError:未定義の変数:player_name

IEは、「player_name」の定義はないと言っています。

しかし、その一方で、私が一緒に行く場合:

setTimeout('ajax_update_entries("Michael Jordan")', 30000);

それは機能し、パラメータMichaelJordanでページを更新します。

だから私の質問は:このスクリプトの何が問題になっていますか?つまり、なぜ変数がplayer_name突然忘れられるのですか?それを修正する方法は?

4

1 に答える 1

4

代わりにこれが必要です:

setTimeout(function() {
    ajax_update_entries(player_name);
}, 30000);

変数は忘れられませんでした。問題は、関数呼び出しを文字列としてに渡していたことですsetTimeout。次に何が起こるかというと、元のコンテキストなしで通過するためeval(ちなみに、これは良くありません)、javascriptインタープリターは何を渡すかを知りません。したがって、エラー。

于 2012-11-22T17:36:52.963 に答える