У меня есть задание на класс, и я очень смущен. Я сам выполнил полное задание, но этот бит меня достал.Могу ли я установить переключатель внутри переключателя?
В основном у меня есть так, что вы нажимаете на первого художника, который затем следует за местом (в зависимости от исполнителя), а затем в зависимости от места, где он перетекает на дату, а затем в зависимости от даты, которую он передает в билет стоимость и стоимость билета.
До сих пор у меня есть это:
function fillVenue() {
//retrieves index of selected artist and target element to be populated
var artist = document.getElementById("artist");
var venue = document.getElementById("venue");
var date = document.getElementById("date");
var ticket = document.getElementById("tickets");
var cost = document.getElementById("cost");
// clears data from each category
venue.options.length = 0;
date.options.length = 0;
ticket.options.length = 0;
cost.options.length = 0;
// clearing event
venue.onchange = null;
// Collect and Calculate Total
function costTotal() {
if (ticket.selectedIndex != 0 && cost.selectedIndex != 0) {
var costTotal = document.getElementById("costTotal");
var ticketCount = ticket.value;
var costAmount = (cost.value).substr(1);
costTotal.value = " £" + ticketCount * costAmount;
}
}
ticket.onchange = costTotal;
cost.onchange = costTotal;
switch (artist.selectedIndex) {
case 0:
// list begins
// allows user to select venue
var venueList = ["Select Venue"];
// allows user to select date
var dateList = ["Select Date"];
// allows user to select ticket amount
var ticketList = ["Select Tickets"];
// allows user to select price of ticket
var costList = ["Select Price"];
// fills each category
fillList(venue, venueList);
fillList(date, dateList);
fillList(ticket, ticketList);
fillList(cost, costList);
break;
case 1:
// madonna
// allows user to select venue
var venueList = ["Select Venue", "London"];
// allows user to select date
var dateList = ["Select Date", "17th July", "18th July"];
// allows user to select ticket amount
var ticketList = ["Select Tickets", "1", "2", "3", "4", "5", "6"];
// allows user to select price of ticket
var costList = ["Select Price", "£30", "£45", "£70"];
// fills each category
fillList(venue, venueList);
fillList(date, dateList);
fillList(ticket, ticketList);
fillList(cost, costList);
break;
case 2:
//Rod Stewart
// allows user to select venue
var venueList = ["Select Venue", "Manchester", "Glasgow"];
// allows user to select date
var dateList = ["Select Date"]
// allows user to select ticket amount
var ticketList = ["Select Tickets", "1", "2", "3", "4", "5", "6"];
// allows user to select price of ticket
var costList = ["Select Price", "£30", "£45", "£70"];
//fills each category
fillList(venue, venueList);
fillList(date, dateList);
fillList(ticket, ticketList);
fillList(cost, costList);
// onchange event - selected Rod Stewart
venue.onchange = function() {
var dateList;
switch(venue.selectedIndex) {
case 0: dateList = ["Select Date"]; break;
case 1: dateList = ["Select Date", "18th July", "20th July"]; break;
case 2: dateList = ["Select Date", "22nd July", "23rd July"]; break;
}
fillList(date, dateList);
}
break;
case 3:
//Guns and Roses
var venueList = ["Select Venue", "London"];
var dateList = ["Select Date", "10th July"];
var ticketList = ["Select Tickets", "1", "2", "3", "4", "5", "6"];
var costList = ["Select Price", "£88"];
fillList(venue, venueList);
fillList(date, dateList);
fillList(ticket, ticketList);
fillList(cost, costList);
break;
case 4:
// Oasis
var venueList = ["Select Venue", "London", "Glasgow", "Nottingham"];
var dateList = ["Select Date"];
var ticketList = ["Select Tickets", "1", "2", "3", "4", "5", "6"];
var costList = ["Select Price"];
fillList(venue, venueList);
fillList(date, dateList);
fillList(ticket, ticketList);
fillList(cost, costList);
venue.onchange = function () {
var dateList;
switch(venue.selectedIndex) {
case 0: dateList = ["Select Date"]; break;
case 1: dateList = ["Select Date", "23rd July", "24th July"]; break ;
case 2: dateList = ["Select Date", "21st July"]; break;
case 3: dateList = ["Select Date", "18th July", "19th July"]; break;
}
cost.onchange = function () {
var costList;
switch(cost) {
case 0: costList = ["Select Price"];
case 1: costList = ["Select Price", "£45", "£60"];
case 2: costList = ["Select Price", "£45", "£65"];
case 3: costList = ["Select Price", "£25", "£45", "£65"];
}
}
fillList(date, dateList);
fillList(cost, costList);
}
break;
case 5:
//Beyonce
var venueList = ["Select Venue", "Glasgow", "Manchester", "Birmingham", "London"];
var dateList = ["Select Date"];
var ticketList = ["Select Tickets", "1", "2", "3", "4", "5", "6"];
var costList = ["Select Price"];
fillList(venue, venueList);
fillList(date, dateList);
fillList(ticket, ticketList);
fillList(cost, costList);
break;
}
}
function fillList(list,items) {
list.options.length = 0;
for (var i = 0; i < items.length; i++) {
var option = new Option(items[i]);
list.options[i] = option;
}
}
Они полный код работает до «Oasis» ниспадающего. Где даты и место встречи просто не складываются. Фактически цена просто остается на «цене выбора», и цены не появляются.
Я думал о добавлении оператора IF, но я не уверен, что это возможно) б) хорошая идея.
Заранее спасибо.
также: Мне сказали, что есть другие способы сделать это, но предпочтительно (если это вариант), я хотел бы сохранить аналогичный вид кодирования, который у меня есть. – user3307086
Эта стенка кодов ... Если вы просто хотите знать, можете ли вы разместить переключатель внутри коммутатора, короткий ответ - да, вы можете. –
Вопрос внизу, спрашивая, как это сделать. Извините, забыл добавить его в начало! :) – user3307086