0

そのため、ページでメソッドを呼び出そうとしていますが、メソッド内に入れたい値はわかっていますが、構文を機能させることができないようです。私はそう感じます。

わかりましたので、ここにページのjavascriptメソッドがあります

function ReturnValue (sValue, sText) 
{
     window.focus();
     var oForm = document.EditForm;

     switch (szType)        // Form element name
     {
     case 'agt':
        oForm.agt.value = sText;
        oForm.agentman.value = sValue;
        oForm.agtid.value = sValue;                              
        oForm.getagt.focus();
        break;

     case 'county':     
        oForm.County.value = sValue;
        sCurrentCounty = new String(sValue);
        document.all("CountyDisp").innerHTML = sText;
        document.all("City").value = "";
        document.all("CityDisp").innerHTML = "";
        document.all("Area").value = "";
        document.all("AreaDisp").innerHTML = "";
        break;
   default:
        break;      
     }  // End switch
 return;
}

非常に単純な関数であり、パラメーターが文字列であると仮定しますよね? したがって、IE8 Script Debugger Console でこれを試しました。

ReturnValue("adf","asdf"); //FAIL "オブジェクトが必要です"

オブジェクトが期待されていましたね。まあ、次に想定する文字列にはシングル クォーテーションが必要かもしれません (念のため)。

ReturnValue('adf','asdf'); //FAIL "オブジェクトが必要です"

わかりました、確認するだけです..だから、文字列を格納するオブジェクトが必要です。私が考えたvarを使用するのはどうですか..

var o = "adf"; var p = "dfsa"; ReturnValue(o、p); //FAIL "オブジェクトが必要です"

念のため、一重引用符を付けてみました。結局のところ、オブジェクトが必要であると確信しています。だから私はオブジェクトを作成しようとしました。

o = 新しいオブジェクト(); k = 新しいオブジェクト(); //{...}

ここから、オブジェクトに文字列を追加する方法がわからなかったので、これを行いました。

o.value = "テキスト"; k.value = "フィールド"; // "テキストフィールド"

さて、私はワクワクしています。そこに紐が入ったオブジェクトがあるので、もう一度まとめてみます。

ReturnValue(o,z) // EPIC FAIL "オブジェクトが必要です"

私はそこにオブジェクトを入れています!今、私は振り出しに戻っています。誰か助けてもらえますか?

さて、問題はまだ解決されていません。

さらに調査したところ、ページの読み込みの最初にスクリプトが実際に 1 回実行されることがわかりました。デバッグとブレークが可能で、コードを一時停止している間にメソッドを実行できます。しかし、リリースしてすべての変数の宣言が完了すると、メソッドを実行できなくなります。しかし、何らかの理由で、実行しようとしているのと同じメソッドを、 Window.Opener.ReturnValue(string,string); を使用してポップアップから実行できます。

理解できません!

Javascript の第一人者は、私があなたを必要としているとき、あなたはどこにいますか!

4

3 に答える 3

2

szType を別の場所で定義したと仮定して、この関数をスクラッチ ページに貼り付けていろいろ試しましたが、IE8 (または FireFox 3) ではこの問題を再現できません。

グーグルで調べたところ、IEがスクリプトブロックをまったく解析しないため、スクリプトタイプを誤って設定すると、これが発生する可能性があるというリファレンスだけが見つかりました。スクリプト ブロックは「text/javascript」に設定されていますか?

それがうまくいかない場合は、関連するコード (おそらくマークアップも) をもっと提供してもらえますか?

別の注意として、jQueryや他の JS ライブラリのいずれかを使用することを検討することをお勧めします。このようなブラウザ固有の JS は悪です (document.all の死)。

于 2009-06-27T01:38:37.677 に答える
1

szType の値は? どこにも設定されていないのですが、おそらくそれが爆撃されているのですか?また、それらの document.all および form. おそらくIE以外では動かないでしょう。document.getElementById('theid') は、dom 要素を取得するのにはるかに適しています。

また、ReturnValue 関数にブレークポイントを設定してステップ スルーしてみてください。この方法で IE8 コンソールを使用したことはありませんが、その方法でデバッグできることは知っています。

編集そのように機能を実行できますか? ReturnValue 内のすべてをコメントアウトして、実際に関数自体を実行できることを確認してください。デバッグ セッションに参加するか、window.ReturnValue を介して関数を呼び出す必要がある場合があります。

于 2009-06-27T01:27:26.390 に答える
1

おそらくszType、oForm、oForm.agtなどのいずれかがnullですか?

于 2009-06-27T01:27:57.963 に答える