选定的一个后直接定位目标数组值

时间:2017-06-19 12:05:36

标签: javascript jquery arrays

我真的很抱歉,我知道已经有人问过类似的问题,但每当我自己尝试这样做时,似乎都没有适用或工作。基本上当用户点击其中一个元素时,我试图获得以下变量:

  • 所选元素的ID
  • 一个数组,其中包含所有选定的值+选择一个
  • 一个数组,其中包含所有后期选择的值(未选中)
  • 直接跟随所选元素的元素的ID

感谢您在不同帖子中提供的帮助,到目前为止,我已设法完成前两个(斜体),但无法实现其他两个。 有人会知道怎么做吗?提前谢谢大家的帮助!!

jQuery的:

var days = ['#monday','#tuesday','#wednesday','#thursday','#friday','#saturday','#sunday'];

$('.days').on('click', function() {
  var day = '#'+this.id;
  var index = days.indexOf(day)+1;
  var prev = days.slice(0, index);
  var next = days.slice(index);
  var above = days[index];
});

2 个答案:

答案 0 :(得分:0)

这就是你需要切片的方法。我不确定您的所有要求,所以我刚刚拿出一个片段来演示如何获得您的价值观。

var dayIds = new Array('#monday','#tuesday','#wednesday','#thursday','#friday','#saturday','#sunday');

const current = '#thursday';
const currentIndex = dayIds.indexOf(current)+1;

const prev = dayIds.slice(0, currentIndex);

const next = dayIds.slice(currentIndex);

console.log(current); //#thursday
console.log(prev); //[ '#monday', '#tuesday', '#wednesday', '#thursday' ]
console.log(next); // [ '#friday', '#saturday', '#sunday' ]

编辑:

添加newVar以包含下一个值

var dayIds = new Array('#monday','#tuesday','#wednesday','#thursday','#friday','#saturday','#sunday');

const current = '#thursday';
const currentIndex = dayIds.indexOf(current)+1;

const prev = dayIds.slice(0, currentIndex);

const next = dayIds.slice(currentIndex);

const newVar = dayIds[currentIndex];

console.log(current); //#thursday
console.log(prev); //[ '#monday', '#tuesday', '#wednesday', '#thursday' ]
console.log(next); // [ '#friday', '#saturday', '#sunday' ]
console.log(newVar); // #friday

答案 1 :(得分:0)

应该看起来更像这样(虽然我真的不理解你的代码逻辑):

var dayIds = ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'];

$('.days').on('click', function() {
  //get selected element id
  var dayId = this.id;

  //find selected position in array and delete all values after
  var dayPos = dayIds.indexOf(dayId);
  var daysBelow = dayIds.slice(0, dayPos + 1;

  //find position of item directly after selected and get value
  var dayAfterPos = dayIds.indexOf(dayId) + 1;
  var dayAfter = dayIds[dayAfterPos]; //(not working)

  //only keep values following selected one
  ...

  console.log(floorsBelow, floorId);
});