私は Web アプリケーションを作成したいと思っています。これは、HTML 要素が作成され、さまざまな他の要素によって処理されて移動されるため、HTML 要素がかなり動的でなければならないことを意味します。したがって、クラスを使用することにしました-イベントを処理する時点まで、多くの成功を収めました..これは、Chromeが定義されていない変数と混同していると疑っているクラスです。
function SpanInputPair(element) {
span = document.createElement("span");
this.Span = getNextInputID();
span.style.display = "none";
span.id = this.Span;
element.appendChild(span);
input = document.createElement("input");
input.type = "text";
this.Input = getNextInputID(); // request a new ID for this element and save into this class
input.id = this.Input; // Attach it onto the element for future finding :/ (slow)
element.appendChild(input);
input.focus();
span.onclick = function() {
var input = getInput(this.Input); // this.Input cannot be seen?
var span = getInput(this.Span);
input.value = span.innerHTML;
toggleDisplay(input);
toggleDisplay(span);
input.focus();
}
input.onblur...
「var input = getInput(this.Input);」という行 Chromeが「this.Input」が表示されなくなったと言っているため、これが問題です。この行を実行して「this.Input」を実際の値に置き換えると、要素が正常に返されるため、これを知っています。ご覧のとおり、テキスト ボックスとスパンを動的に作成し、将来の使用のためにそれらの ID を設定しています。これは、以前に要素自体をクラスに保存し、それをイベント内で使用しようとしたためです。同じ問題なので、代わりに、document.getElementByID() を使用して、ドキュメントの各イベントでそれを見つけます。奇妙なことに、作成したばかりのテキスト ボックスにフォーカスしているようにも見えません (それが問題の一部である場合はわかりません)。このプロジェクトは完全にゼロから作成され、ライブラリを使用しません。だから私の質問は、なぜ要素が「■ イベントは、それを作成したクラス内の変数を参照できませんか? どうすればこれを修正できますか?
多くの人がJQueryなどのライブラリを使用している、および/またはクラスを使用していないため、これが投稿されたことはまだ見ていません。質問は、クラスの内部変数を使用したイベント処理に固有のものです。