0

この配列があるとしましょう:

likes = [4,6,42,72,7,4,42,56,6,24];
time = [1,2,3,4,5,6,7,8,9,10];

そして、私が持っている棒グラフの 1 つをクリックすると、配列のlikes位置に従って、現在の時刻に転送されます。

this.click(function () {
    var pos = result_likes.indexOf(this.bar.value);
    var pos2 = result_time[pos];

    setCurTime(pos2);
});

ただし、いいねの値が同じ場合、たとえば番号 4 の場合、その値には 2 つの位置があり、SetCurTime は、最初に「like=4」が表示されたときにのみ転送されます ( timecode[0];)

これを解決し、適切な時間位置に進むにはどうすればよいですか?

4

3 に答える 3

0

同様の解決策が必要な他の人のために、ここにコメントを再投稿します。

var pos2 = result_time[this.bar.id];
于 2013-03-08T18:10:38.560 に答える
0

gRaphael ライブラリを使用していることを考えると、次のようにバー要素をクロールして、チャート内の要素を確認できます。

this.click(function(evt) {
    var pos = 0; 
    var child = evt.currentTarget; 
    var type = child.nodeName;
    while( (child = child.previousSibling) != null && type === child.nodeName)
        pos++;

    var pos2 = result_time[pos];

    setCurTime(pos2);
});
于 2013-03-07T17:30:19.427 に答える
0

この問題を解決するには、バー要素にメタ データを埋め込む必要があります。たとえば、次のようなカスタム データ属性を使用できます。

<div class="bar" data-index"5">4</div>

もちろん、これを動的に生成して、適切なインデックスと値で各バーを作成します。

次に、クリックハンドラーは次のようになります。

this.click(function () {
    var pos = this.bar.dataset.index;
    var pos2 = result_time[pos];

    setCurTime(pos2);
});
于 2013-03-07T16:39:24.280 に答える