发生和阵列的位置

时间:2013-03-07 16:02:50

标签: javascript arrays indexof

让我说我有这个阵列:

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只会在我第一次出现“喜欢= 4时出现timecode[0];

我如何解决这个问题并向正确的时间位置前进?

3 个答案:

答案 0 :(得分:0)

您需要在条形元素中嵌入元数据才能解决此问题。例如,您可以使用custom data attributes之类的:

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

当然,您可以动态生成此项,以使用正确的索引和值创建每个栏。

然后在你的点击处理程序中将是:

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

    setCurTime(pos2);
});

答案 1 :(得分: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);
});

答案 2 :(得分:0)

此处针对需要类似解决方案的任何其他人发表评论:

var pos2 = result_time[this.bar.id];