同じクラス名の要素がいくつかあります。クリックした要素の数を取得することができます
onclick
イベントで私がクリックした要素の数を取得するにはどうすればよいですか?例えば
:
var x = document.getElementsByClassName("myclass").length;
for (a=0; a<=x; a++)
{
// here i want get number of clicked myclass
}
同じクラス名の要素がいくつかあります。クリックした要素の数を取得することができます
onclick
イベントで私がクリックした要素の数を取得するにはどうすればよいですか?例えば
:
var x = document.getElementsByClassName("myclass").length;
for (a=0; a<=x; a++)
{
// here i want get number of clicked myclass
}
あなたはonClickイベントハンドラでクリックされた要素についての情報を取り込むことができます。
イベントが発生したときに実行される関数は、最初のパラメータとしてイベントが渡されます。このイベントオブジェクトには、クリックされた特定の要素への参照となるターゲットがあります。
function clickHandler(event) {
console.log(event.target);
}
あなたはdocument.getElementsByClassName("myclass")
のアレイ上indexOf
を使用することができます。 Array.from
または[].slice.call
を使用して配列を作成できます。
と仮定すると、あなたのclick
ハンドラは、以下のスニペットのように見えるとe.target
がクリックされた要素であるところ、彼らはあなたがこのようなアレイ上indexOf
e.target
を確認することができ、「e.target
に何かをする」:
document.addEventListener("click", function(e) {
if (e.target.classList.contains("myclass")) {
/*
The above part could as well look like
div1.onclick = function(e){…};
div2.onclick = function(e){…};
…
*/
console.log("Do something to %o", e.target);
console.log("Index of clicked element: %d", Array.from(document.getElementsByClassName("myclass")).indexOf(e.target));
}
});
<div>
<div class="myclass">A0</div>
<div>B1</div>
<div class="myclass">A2</div>
</div>
<div>
<div>B3</div>
<div class="myclass">A4</div>
</div>
<div class="myclass">A5</div>
<div class="myclass">A6</div>
<div>B7</div>
<div class="myclass">A8</div>
あなたは、同じ親要素内の要素のインデックスをしたい場合、あなたの代わりに使用することができます。
Array.from(e.target.parentNode.children).indexOf(e.target)
あなたはmyclass
クラスで要素に上記を制限したい場合は、あなたのようなものを使用することができます
Array.from(e.target.parentNode.getElementsByClassName("myclass")).indexOf(e.target)
または直接子供たちのため:
をArray.from(e.target.parentNode.children).filter(function(elem){
return elem.classList.contains("myclass");
}).indexOf(e.target)
ありがとうございます。このコードは私にとっては難しいですが、それは動作します! ;)時間が増えると、慎重に調べます。 – gfhgfhfgh
@KacperŁapiakまあ、実際には「難しい」というわけではありません。単に '' Array''(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Methods_2)メソッドを使用しています。 。私はそれらについて読むことをお勧めします。それらは本質的に "for"ループを "置き換える"。もちろん、 'for'ループでコードを記述することもできますが、代わりに' Array'メソッドを使用すると、よりクリーンなコードが生成されると思います。 – Xufox
クラスの数はどういう意味ですか? – Dalorzo
onclickイベントが要素にどこにアタッチされているかを表示できますか?どんな機能が呼び出されていますか? – dave