つまり、オブジェクトリテラルを使用して、未知の量の変数を任意の順序で関数に渡すことができるようにしたいのです。これは理論的には大したことではありませんが、私のコードでは、このオブジェクトリテラルは。と呼ばれる2番目の関数に渡されon_change
ます。
on_change
要素のinnerHTMLを文字列と比較することで機能します。同じ場合は、関数を再度呼び出すためのタイムアウトを設定します。要素のinnerHTMLが文字列と異なる場合、3番目のパラメーターが実行されます。これは、関数または文字列のいずれかになります。どちらの方法でも実行されます。私はこの機能を十分にテストし、しばらくの間使用しました。
ただし、オブジェクトリテラルを関数呼び出しに流すことができないようです...
var params = { xpos:'false'};
on_change('window_3_cont_buffer','','
if(Window_manager.windows[3].window_cont_buffer.getElementsByTagName(\'content\')[0].getElementsByTagName(\'p\')[0].innerHTML == \'ERROR\'){
alert(Window_manager.windows[3].window_cont_buffer.getElementsByTagName(\'content\')[0].getElementsByTagName(\'p\')[1].innerHTML);
return false;
} else {
Window_manager.windows[3].load_xml(\'location/view.php?location_ID=3\', \'\', ' + params + ' ); }
');
私はこれをフォーム送信の一部と呼んでいます。この行の後で、関数を呼び出してajaxを介してコンテンツをロードします。これは正常に機能し、on_change
関数からコードをトリガーします。
load_xml
私は関数をテストしました、それは呼び出しalert(param.xpos)
て正しい応答を得ることができます。未定義のチェックを追加して、電話をかける残りの時間にload_xml
アラートが殺到しないようにすることもできます。
このload_xml
関数は最初に関数を設定しon_change
、次に関数を呼び出してコンテンツを非表示のdivにロードします。AJAXリクエストがそのDIVを更新すると、on_change
関数は関数を呼び出す必要がありparse_xml
ます。これにより、xmlファイルから情報が取得されます。ただし...このオブジェクトリテラルパラメータの考え方は、このparse_xml
関数に特定のものを無視するように指示できるということです。
on_change("window_" + this.id + "_cont_buffer", "", "Window_manager.windows[" + this.id + "].parse_xml('" + param + "')");
これはの一部でありload_xml
、そこにparamビットがあっても完全に正常に機能します。ただし、parse_xml
そのパラメータを使用できないようです。
私はそれを、オブジェクトリテラルが通過したことを意味すると思うことがparse_xml
できalert(param)
、与えることができるようになりましたが、呼び出しようとすると未定義になります。[object object]
alert(param.xpos)
私はこれが問題の豚であることを知っています、そして私は関数に無数のブールパラメータをとらせるだけでそれを回避することができました、しかしそれはあまり良い解決策ではありません。