私のアプリケーションには、GoogleマップV3 APIでJavascriptを使用しています。 私のコードvaiNameが配列であるGoogleマップに動的フォームを送信できませんplace_changedイベント
for(var i = 0; i < viaName.length; i++) {
// some other code......
google.maps.places.Autocomplete(document.forms[i+1].txtVia));
autocomplete[i+1].bindTo('bounds', map);
google.maps.event.addListener(autocomplete[i], 'place_changed', function() {
doSomething(document.forms[i+1]); });
}
。
私のページには複数のフォームがあり、その中にテキストを予測するためにオートコンプリートとバインドされたテキストボックスがあります。私が望むのは、テキストがページの任意のテキストボックスで変更されたときにdoSomething()関数が呼び出されることです(したがって複数のフォームが使用され、テキストボックスが使用されます)。
例:viaName.length = 4の場合、どのフォームのどのテキストボックスでもイベントをトリガーしても、doSomething関数はページのdocument.forms[4]
を取得します。
応答スミス、ありがとう、私は知っているが、イベント(place_change)イベントが発生し、このイベントが発生したフォームのオブジェクトを渡したいときdoSomething関数が呼び出されます。前述のように、私は複数のフォームを持っているので、forループを使用しています。このコードでは、forループはフォームオブジェクトをdoSomething関数に渡すためにリスナーをバインドします。間違っているなら私を訂正しますか? – user1078663
さて、あなたは今何をしているのか分かります。ですから、place_changedイベントが発生するたびに私が集めるものから、あなたがdocument.forms [4]にいると常に考えていますか?この場合、addListenerがオートコンプリートボックスにアタッチされているときに問題が発生します。数行のコードを大まかに見ると、繰り返しているものと同じものを上書きするたびに新しいオートコンプリートを作成する必要があるように見えます。これにより、forループの最後の繰り返しが4になります。うまくいけば、あなたが現在列挙しているコードから見るのが難しいのは間違いです。 –