我的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>
任何人都对我可能做错了什么有任何想法?
答案 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>