0

この関数を使用して、クエリ文字列の有無にかかわらず、何度も問題なく任意の URL または「自己」に送信しました。

function submitu(url, q) {
 var frm = document.<?php echo $formname ?>;
 if (url == '') {url = '<?php echo $thispage?>'; }
 frm.action = url+q; frm.submit(); }

以下のように、PHP 変数を関数の外に移動しようとすると、動作が停止します (未定義エラーから)

var thispage = '<?php echo $thispage?>';
var frm = document.<?php echo $formname?>;
function submitu(url, q) {
 if (url == '') {url = thispage;}
 frm.action = url+q; frm.submit();}

var frm = document.forms['']; も試しました

他に競合するJavaScriptはありません。

(1)。これが機能しない理由を誰かに教えてもらえますか? (2)。また、関数が jquery $(function() {.....} ready 関数の内部および先頭に配置されている場合、最初のメソッドも失敗するのはなぜですか?

どうもありがとう

4

1 に答える 1

1

関数の外にある場合、var frm = document.formname;であるため、失敗します。ページが読み込まれるとすぐに、つまりフォーム要素が実際に作成される前に実行されるため、「未定義」になります。関数内では、関数が実行されたときにのみ実行されます。その時点でDOMが完了し、それを見つけることができます。

于 2012-04-19T10:20:37.307 に答える