所以我是新手,我需要一些基本的帮助。我想制作一个程序,检查房间是免费还是被带走。我不知道我是否可以在所有免费房间做一个变量,或者我应该这样做另一种方式。我有点坚持解决这个问题。
function action() {
var room = document.getElementById('text');
var free = [1, 2, 3];
if (room.value == free) {
alert('Hello');
} else {
alert('Taken');
}
}
document.getElementById('button').onclick = function() {
action();
}
我想问一下,如果可以将变量i输入其他变量与免费房间列表进行比较,那么如何使这项工作呢?
答案 0 :(得分:2)
您不能只将数字与数组进行比较。您需要检查您的号码是否在阵列中:
if (free.indexOf(room.value) > -1)
另外,假设您正在使用文本字段,则在检查之前,您需要将room.value
转换为数字(而不是字符串):
if (free.indexOf(+room.value) > -1)
您可以在MDN上了解有关indexOf()
的更多信息。
答案 1 :(得分:1)
第if (room.value == free)
行将字符串(值)与数组进行比较。这通常不会成真。
要在数组中查找值,请使用Array#indexOf
。它进行了严格的比较,因为你在数组中的值是数字,你必须确保你的值也是一个数字。
所以
if (free.indexOf(+room.value) != -1) {
// Yes it's there
}
一元+
是将字符串转换为数字的一种方法。另一个是parseInt
,它允许您指定基数(数字基数):
if (free.indexOf(parseInt(room.value, 10)) != -1) {
// Yes it's there
}
您还有其他选择; this answer列出了各种选项及其优缺点。
答案 2 :(得分:1)
你可以试试这个。更进一步,您可以删除从免费房间列表中取出的房间号码,并将其推送到已经拍摄的房间列表中。
function action() {
var isRoomAvailable = false;
var room = document.getElementById('text').value;
var freeRoom = [1, 2, 3]; // 4-10 are taken rooms.
var takenRooms = [4, 5, 6, 7, 8, 9, 10];
for (var i = 0; i < freeRoom.length; i++) {
if (room == freeRoom[i]) {
alert('Hello, You can take room '+room);
isRoomAvailable = true;
return;
}
}
if (!isRoomAvailable) alert("Sorry, Room number " + room + " is taken");
}
document.getElementById('button').onclick = function() {
action()
}
Enter Room number(1-10):
<input type="text" id="text" />
<button id="button">Search Room</button>
答案 3 :(得分:1)
您应该使用0和1系统来存储是否有房间。因此,根据您的喜好,0代表被取消,1代表免费,反之亦然。所以它所要做的就是测试阵列中的房间值是0还是1