質問

私はTelligent CommunityServerとの統合で使用するためにASPでWebコントロールを作成しました。コントロールは、権限に基づいてUI要素の可視性を制御するためのC#のバックエンドのいくつかの10行にASPで書かれているが、私は機能の90%はJavascriptストレートアップだと思います。

あなたが同じページ上のコントロールの2つのインスタンスをドロップするまで、

コントロールは、美しく動作します - 。彼らはまったく同じJavaScript関数を参照するので、唯一のコントロールの動作を

私は私が持っているこの機能は、JavaScriptのこの1200本を取ると、それはそうコントロールの各インスタンスはJavascriptのそのそれぞれ固有のインスタンスを参照できることを確認する方法を教えてください。

役に立ちましたか?

解決

問題は、単にHTML要素を見つけるされている場合は簡単ですその後、イベントをトリガした - それは、イベント引数であなたに渡されます。 (あなたは、その後、もちろん、その親要素を取得することができます。)私は問題を正しく理解していればそれで、あなたは、いくつかのコントロールを参照するJavaScript関数を持っているのget重複?

私はここに魔法の解決策はないと思う:あなただけのIDを一意にする必要があります。あなたは(自動的にあなたのためにこれを扱う)、サーバー側のコントロールを使用していないなら、あなたは例えば、いくつかのサーバー側生成接頭辞または接尾辞を使用することができます。

<input id="<%= ParentControlId %>_mytextbox" type="text" />

ParentControlIdが親コントロールの一意のIDです(あなたが長いのIDを気にしないならば、あなただけControl.IDを使用することができます)。

もちろん、あなたは、各コントロールのインスタンスのためにそれらを複製するのではなく、あなたのJavaScript関数を再利用するようにしてください。あなたはサーバー生成IDのアプローチを使用している場合、あなたは周り全体のIDを渡す必要があります。あなたは接頭辞アプローチを使用している場合は、あなただけの接頭辞を周りに渡すことができます。

他のヒント

どのようにして、ページにJavaScriptを取得し、あなたのコントロールがありますか?それを直接注入しますか?あなたはScriptReferenceを使用していますか?両方のコントロールが参照された場合に一度、ブラウザだけでJSをロードするのと同じJS(同じURL)。

また、あなたのJSは、任意の古いインスタンスの観点で書かれていますか?例えばロード()関数はその中にハードコード化されたインスタンス名を持っているあなたはロード(oControlName)のような機能を持っていますかいますか?

IMO、複数の「JavaScriptを」取得しようとすると、進むべき道ではありません - 。あなたのコードをリファクタリングすると、迅速にあなたの答えを得ることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top