【发布时间】:2017-11-20 04:27:35
【问题描述】:
如果我从选择菜单中选择电影院,它不会返回数组 programmazione 中存在的电影的标题。
var programmazione = [{
titolo: 'matrix',
cinema: ['garibaldi', 'politeama']
},
{
titolo: 'limitless',
cinema: ['politeama', 'italia']
},
{
titolo: 'forrest gump',
cinema: ['italia', 'popoazzurra']
}
];
var nodoSelectCinema;
var nodoMostraFilm;
var nodoListaFilm;
function calcolaListaFilm(cinema) {
try {
var listaFilm = [];
for (var i = 0; i < programmazione.length; i++) {
var film = programmazione[i];
var j = 0;
while ((j < film.cinema.length) && film.cinema[i] != cinema) {
j++;
}
if (j < film.cinema.length) {
listaFilm.push(film.titolo);
}
}
console.log(listaFilm);
return listaFilm;
} catch (e) {
alert("calcolaListaFilm" + e);
}
}
function calcolaListaCinema() {
try {
var listaCinema = {};
for (var i = 0; i < programmazione.length; i++) {
var film = programmazione[i];
for (var j = 0; j < film.cinema.length; j++) {
var cinema = film.cinema[j];
listaCinema[cinema] = true;
}
}
return listaCinema;
} catch (e) {
alert("calcolaListaCinema" + e);
}
}
function visualizzaListaFilm(listaFilm) {
try {
while (nodoListaFilm.childNodes.length > 0) {
nodoListaFilm.removeChild(nodoListaFilm.firstChild);
}
for (var i = 0; i < listaFilm.length; i++) {
var film = listaFilm[i];
var nodoFilm = document.createElement("li");
nodoListaFilm.appendChild(nodoFilm);
var nodoTesto = document.createTextNode(film);
nodoFilm.appendChild(nodoTesto);
}
} catch (e) {
alert("visualizzaListaFilm" + e);
}
}
function creaSelect(nodoSelect, opzioni) {
try {
for (var opzione in opzioni) {
var nodoOpzione = document.createElement("option");
nodoOpzione.value = opzione;
var nodoTesto = document.createTextNode(opzione);
nodoOpzione.appendChild(nodoTesto);
nodoSelect.appendChild(nodoOpzione);
}
} catch (e) {
alert("creaSelect" + e);
}
}
function gestoreMostraFilm() {
try {
var cinema = nodoSelectCinema.value;
var listaFilm = calcolaListaFilm(cinema);
visualizzaListaFilm(listaFilm);
} catch (e) {
alert("gestoreMostraFilm" + e);
}
}
function inzializza() {
try {
nodoSelectCinema = document.getElementById("selectCinema");
nodoMostraFilm = document.getElementById("mostraFilm");
nodoListaFilm = document.getElementById("listaFilm");
var listaCinema = calcolaListaCinema();
creaSelect(nodoSelectCinema, listaCinema);
nodoListaFilm.onclick = gestoreMostraFilm();
} catch (e) {
alert("inizializza" + e);
}
}
window.onload = inzializza;
<select id="selectCinema"></select>
<input type="button" id="mostraFilm" value="Mostra Film">
<br>
<ol id="listaFilm"></ol>
【问题讨论】:
-
我不知道哪个函数不起作用,如果我知道,我没有写:D 返回选择选项的函数是 creaSelect() 和 calcolaListaCinema()
-
脚本有效(如果我们忽略这一行
nodoListaFilm.onclick = gestoreMostraFilm();可能是错误的事实):jsfiddle.net/d5pgnkj6;inzializza()被执行了吗? -
脚本有效,它创建选择选项,但如果您更改选项,结果不会改变。 inizializza 被执行
标签: javascript html forms function select