0

可以说我有这个数组:

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

当点击我拥有的一个条形图时,我会根据数组likes位置转发到当前时间。

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

    setCurTime(pos2);
});

但是,当我有相同的喜欢值时,例如数字 4,它将有两个位置,并且 SetCurTime 只会将我转发到第一次出现“like = 4”时(timecode[0];

我怎样才能解决这个问题并前进到正确的时间位置?

4

3 回答 3

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 回答
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 回答