WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:コレクションの要素番号をループを使用せずに取得できますか

teka [WriteDate : Thu May 31 21:31:57 2001]

イベントが起きたのがコレクション内の何番目の要素か知りたくてループを利用しています。
しかしjavaScriptのループの速度が思ったより遅く困っています。

onLoad時にループさせて配列に入れてしまう方法も試したのですが、今度はそのループが遅くて・・・。(;_;)

何か良い方法はないでしょうか


Nobu3 [URL] [WriteDate : Fri Jun 1 09:56:29 2001]

引数を使う。とか。
document.activeElement.sourceIndexを使う。とか。

目的がわかれば、何番目かわからなくても処理できる方法があるような。気がします。


ween [WriteDate : Fri Jun 1 11:08:23 2001]

もし、ループを

var n;
for(var i=0; i<document.all.length; i++){
if( element == document.all[i] ){ n=i; break; }
}

みたいに回しているんだったら、

var n;
var collection = document.all;
var ln = collection.length;
for(var i=0; i<ln; i++){
if( element == collection[i] ){ n=i; break; }
}

というようにコレクションとその長さを変数に入れてしまったほうが処理が速いです。
手元の WinIE5.5 で試してみた感じですが。


teka [WriteDate : Fri Jun 1 12:07:29 2001]

ロード時に
allItemNomber = document.all.length;
documentArray = new Array(allItemNomber);
として
a = document.all.a;
for(var i = 0; i < a.length; i++)
{
  b = a[i].sourceIndex;
  documentArray[b] = i;
}
document.onmouseover = handleEvent;
として

イベントの受け側で
function handleEvent()
{
 x = event.srcElement.sourceIndex;
 i = documentArray[x];
   if(i != null)
   {
    iの時の処理
  }
}
という具合に要素番号iを取得していました。
このループが遅くて困っていました。
weenさんの方法に書き換えてみます。

自己流ですので大間違いかもしれません

Nobu3さんの 引数を使う方法をもう少し詳しく教えていただければ助かります。よろしくお願いします。


Nobu3 [URL] [WriteDate : Fri Jun 1 12:24:37 2001]

勘違いの戯言なので無視してください。


teka [WriteDate : Fri Jun 1 15:24:49 2001]

ループが若干早くなったような(気のせい)気がします。しかし遅いです。大きなコレクションなので・・・。


Nobu3 [URL] [WriteDate : Fri Jun 1 15:28:45 2001]

ところで、何をしたくてその番号を取得するのですか?
本当に番号を取得しないとできないことなんですか?


teka [WriteDate : Fri Jun 1 16:30:04 2001]

えーとjavaServletが書き出すJavaScriptのテーブルがあるのですが、これをその番号で参照するためです。変なことをやってます。


ween [WriteDate : Fri Jun 1 17:08:46 2001]

それならば、書き出すときに該当する要素にあらかじめ
通し番号を含む id 等をふっておけば
sourceElement.id でいけそうな気がするんですが。


teka [WriteDate : Fri Jun 1 17:54:40 2001]

なるほど、コレクションのことばっかり考えていました。その方法をすこし検討してみます。


teka [WriteDate : Sat Jun 2 08:09:36 2001]

うまくいきました。weenさんNobu3さん本当にどうもありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]
ChaichanPAPA's World