var form = document.getElementById("airportForm")
var input = document.getElementById("airport")
//user input from form
var airport = {
lax : 12091,
jfk : 14511,
ewr : 11000,
lga : 7003,
phl : 10506,
dca : 7169,
iad : 11500,
bos : 10083,
btv : 8320,
mht : 9250,
pwm : 7200,
npt : 2999,
hpn : 6549,
bdl : 9510,
bwi : 10502,
pit : 11500,
ord: 13001,
mdw : 6522,
ind : 11200,
lax : 12091,
sfo : 11870,
san : 9401,
las : 14510,
sea : 11901,
dfw : 13401,
aus : 12248,
atl : 11890,
pbi : 10008,
mco : 12005,
lhr : 12799,
lgw : 10364,
man : 10000,
lcy : 4948,
dub : 8652,
snn : 10495,
cdg : 13829,
ory : 11975,
mad : 14272,
bcn : 11654,
opo : 11417,
lis : 12484,
dxb : 13123,
auh : 13451,
dwc : 14764,
jed : 12467,
ruh : 13796,
kwi : 11483,
ebl : 13891,
sda : 13123,
tlv : 11998,
amm : 12008,
cai : 13120,
jnb : 14495,
cpt : 10502,
dkr : 11450,
cmn : 12205,
rak : 10171,
mem : 11120,
dme : 12448,
svo : 12139,
aua : 8999,
hav : 13123,
hkg : 12467,
pvg : 13123,
pek : 14764,
bkk : 13123,
cgk : 12008,
sin1 : 13123, //CANNOT USE SIN...
can : 12467,
syd : 12999,
mel : 11998,
bne : 11680,
per : 11299,
akl : 11926,
nrt : 13123,
hnd : 9839,
tas : 13123,
rix : 8366,
ham : 12028,
osl : 11811,
cph : 11811,
hel : 11286,
arn : 10830,
kef : 10056
}
//Uses user input to get relevant value from airport object
var airportNumber = (airport[input]);
function capable() {
input.toLowerCase;
alert(airportNumber)
if (airportNumber >= 10200) {
alert("YES")
}
else {
alert("NO")
}
}

<form id="airportForm" action="form_action.asp">
Airport:
<input id="airport" type="text" name="airport">
</form>
<button onclick="capable()">Submit</button>
&#13;
似乎一切正常,但在功能强大的情况下(),当它发出机场号码警报时,它会提醒未定义。&#39;
用户的输入和我的变量列表之间显然存在错过的连接。有人知道我做错了吗?
答案 0 :(得分:1)
这是因为你只在页面加载时阅读airportNumber
和input
,但是你需要在每次输入时加载它,所以我把它放在有能力的函数之上:
var form = document.getElementById("airportForm")
//user input from form
var airports = {
lax: 12091,
jfk: 14511,
ewr: 11000,
lga: 7003,
phl: 10506,
dca: 7169,
iad: 11500,
bos: 10083,
btv: 8320,
mht: 9250,
pwm: 7200,
npt: 2999,
hpn: 6549,
bdl: 9510,
bwi: 10502,
pit: 11500,
ord: 13001,
mdw: 6522,
ind: 11200,
lax: 12091,
sfo: 11870,
san: 9401,
las: 14510,
sea: 11901,
dfw: 13401,
aus: 12248,
atl: 11890,
pbi: 10008,
mco: 12005,
lhr: 12799,
lgw: 10364,
man: 10000,
lcy: 4948,
dub: 8652,
snn: 10495,
cdg: 13829,
ory: 11975,
mad: 14272,
bcn: 11654,
opo: 11417,
lis: 12484,
dxb: 13123,
auh: 13451,
dwc: 14764,
jed: 12467,
ruh: 13796,
kwi: 11483,
ebl: 13891,
sda: 13123,
tlv: 11998,
amm: 12008,
cai: 13120,
jnb: 14495,
cpt: 10502,
dkr: 11450,
cmn: 12205,
rak: 10171,
mem: 11120,
dme: 12448,
svo: 12139,
aua: 8999,
hav: 13123,
hkg: 12467,
pvg: 13123,
pek: 14764,
bkk: 13123,
cgk: 12008,
sin1: 13123, //CANNOT USE SIN...
can: 12467,
syd: 12999,
mel: 11998,
bne: 11680,
per: 11299,
akl: 11926,
nrt: 13123,
hnd: 9839,
tas: 13123,
rix: 8366,
ham: 12028,
osl: 11811,
cph: 11811,
hel: 11286,
arn: 10830,
kef: 10056
}
//Uses user input to get relevant value from airport object
function capable() {
var input = document.getElementById("airport").value;
var airportNumber = (airports[input]);
alert(airportNumber)
if (airportNumber >= 10200) {
alert("YES")
} else {
alert("NO")
}
}
<form id="airportForm" action="form_action.asp">
Airport:
<input id="airport" type="text" name="airport">
</form>
<button onclick="capable()">Submit</button>
答案 1 :(得分:0)
你有几个问题
1)您没有按下按钮
获取更新的机场代码 2)input
变量是html控件和机场代码本身。您必须使用ìnput.value
function capable() {
var input = document.getElementById("input");
var airportNumber = airports[input.value]; // get user airport code
input.toLowerCase;
alert(airportNumber)
if (airportNumber >= 10200) {
alert("YES")
}
else {
alert("NO")
}
}
顺便说一句:没有必要像在第二行那样进行input
的全局加载,我将该逻辑移到capable
方法