如何获取用户的输入并返回我定义的匹配变量的值?

时间:2015-04-02 22:25:13

标签: javascript html html5 forms object

  1. 用户输入三个字母代码
  2. 函数查找具有相同三字母代码的变量
  3. 如果分配给此变量的数字是> 10200,警告"是"
  4. 
    
    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;
    &#13;
    &#13;

    似乎一切正常,但在功能强大的情况下(),当它发出机场号码警报时,它会提醒未定义。&#39;

    用户的输入和我的变量列表之间显然存在错过的连接。有人知道我做错了吗?

2 个答案:

答案 0 :(得分:1)

这是因为你只在页面加载时阅读airportNumberinput,但是你需要在每次输入时加载它,所以我把它放在有能力的函数之上:

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方法