我正在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
答案 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;