私はにconsole.logデータ数の値 JavaScriptを使用して、クリックイベントに<span>
の属性にしようとしています上のプレーンなJavaScriptを使用してクリック上の値を取得します。クライアント側でコードの実行中に複数のスパンが動的に作成され、それぞれに「ダイナミックスパン」というクラスがあります。は、イベントリスナーを追加し、動的に生成された要素
サンプル:
<span class="dynamic-span" data-number="1">This is a dynamic span</span>
以上のスパンがクリックされたときに、番号 "1" が記録され、コンソールになります。
jQueryを使用して番号を記録することができます。
$("body").on("click", ".dynamic-span", function (e) {
e.preventDefault();
var number = $(this).data("number");
console.log(number);
});
私は単純なJavaScriptを使用して同じ結果を達成したいと思います。
私は "dynamic-span"クラスを使用してスパンを対象としています。
var elems = document.getElementsByClassName("dynamic-span");
したがって、ClassNameを使用してスパンを取得できます。しかし、私はHTMLCollectionを取得しており、配列ではなく、forループは機能していません。
コード:
var
elems = document.getElementsByClassName("dynamic-span"),
i;
for (i = 0; i < elems.length; i++) {
elems[i].addEventListener("click", function (e) {
console.log(this.getAttribute("data-number"));
});
}
私はまた、次のようにStackOverflow質問 JavaScript click event listener on class しかし、誰の成功を確認しています。
下記参照 https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByClassNameはElement.getElementsByClassName()メソッドは、ライブHTMLCollectionを返し示唆する。
上記の課題を達成するための方法をお勧めします。
はい! 1つの質問ですが、もし私が前に持っていたHTMLCollectionをループしたいのであればどうしますか? forループが機能していないため、適切な方法がありますか? – yusufshakeel
@yusufshakeel - あなたは要素が動的に作成されたと言いました。コレクションをループすると、その時点で存在していた要素だけがループされます。 – Quentin
@Quentin動的に作成されたものをループする方法。私はjqueryを使用してそれを行うことができます。どのような適切な方法は、動的スパンのためのプレーンなjavascriptを使用してそれを行うです。ダビデが上で指摘したものが働く。何か別の選択肢がありますか? – yusufshakeel