无法获得财产' undefined'未定义或空引用

时间:2015-06-02 12:09:34

标签: javascript

我的javascript代码存在问题。当我按下按钮时,该功能运行,但屏幕上没有任何反应。我进入了IE的开发工具,并注意到当我运行脚本时,我得到以下内容:无法获得属性' undefined'未定义或空引用。这源于脚本中的else语句:

function doSearch(){
    var selectedItem = document.getElementsByName("engines").selectedIndex;
    if (selectedItem == -1)
        alert("You must select a search engine.");
    else
        location.href = document.getElementsByName("engines").option[selectedItem].value + document.getElementById("searchTerm").value;
}

我相信html中的代码是正确的,但它似乎并没有起作用。例如,在Google的选择列表选项中,我有:

<option value="http://www.google.com/search?q=">Google</option>

任何人都对我可能做错了什么有任何想法?

1 个答案:

答案 0 :(得分:1)

如果选择

<select name="engines">

然后你需要

document.getElementsByName("engines")[0].selectedIndex

location.href = document.getElementsByName("engines")[0].option[selectedItem].value ...

因为getElement s ByName会返回一个集合

如果选择

<select id="engines">

然后你需要

document.getElementById("engines").selectedIndex

另外我会用

if (selectedItem < 1)

如果我有“请选择”,因为用户可以选择第一个选项

以下是我可能会对其进行编码的方式(注意:Google不能在iFrame中运行,但bing会这样做)

window.onload=function() {
  document.getElementById("engines").onchange=function() {
    var engine = this.value;
    if (engine) {
      location.href = engine.replace("@",document.getElementById("searchTerm").value);
    } 
  }
}  
<input id="searchTerm" type="text" />
<select id="engines">
  <option value="">Please select</option>
  <option value="https://www.google.com/search?q=@">Google</option>
  <option value="https://www.bing.com/search?q=@">Bing</option>
</select>