JQuery或Javascript:在一周中的几天内遍历数组

时间:2017-08-11 18:38:10

标签: javascript jquery html

我正在Electron开发一个应用程序:我有7< DIV>一周中每一天的元素,它们被给予#btn-SUNDAY,#btn-MONDAY等的ID。

当点击其中任何一个时,这些按钮应该改变<的文本属性。 p为H.元素,ID为#day,指向用户点击的一周中的任何一天。

我的猜测是在所有7天内迭代一个数组,然后比较哪一天等于#btn- [i],然后将#day的文本属性更改为索引处的字符串。

虽然我能够更改文本属性,但我总是得到" SATURDAY,以及-1"结果是。我显然做了一件非常错事。我可能会用每个div的if语句编写这个代码,但我想节省时间。具有讽刺意味的是,我已经有一段时间了,并且解决方案可能很容易,我只是没有看到它。

这是我的代码段,它包含在html页面中,其中包含< div> s:

var days = [];
days.push('SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY');

for (i in days){

  $("#btn-"+days[i]).mouseup(function() {

    $("#day").text(`${days[i]}, and ${days.indexOf(i)}`);

  })
}

我猜我在那里的某个地方需要一个if语句,但天堂帮助我的大脑,我不知道在哪里。

我可能也会使用" for(i in x)"语法不正确。仍然试图了解Javascript和JQuery。

感谢任何帮助,

-Jon

1 个答案:

答案 0 :(得分:1)

你需要一个闭包,使用jQuery' each似乎适合



var days = ['SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY'];

$.each(days, function(i, day) {
  $("#btn-" + day).on('mouseup', function() {
    $("#day").text(day + ', and ' + i);
  });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button id="btn-MONDAY">Monday</button>
<button id="btn-TUESDAY">Tuesday</button>
<button id="btn-WEDNESDAY">Wednesday</button>
<br /><br />
<p id="day"></p>
&#13;
&#13;
&#13;