Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅在FireFox中工作的简单javascript_Javascript_Cross Browser - Fatal编程技术网

仅在FireFox中工作的简单javascript

仅在FireFox中工作的简单javascript,javascript,cross-browser,Javascript,Cross Browser,我创建了一个脚本,需要选择一个起始年,然后只显示从该起始年开始的年份->2009。这只是一个从起点到终点的范围选择器 该脚本仅在firefox中可用。我正在学习javascript,所以我希望有人能给我指出正确的方向。现场脚本可在以下位置找到: 功能显示年2(开始年){ //警报(起始年份); 如果(开始年份!=“任何”){ var i; 对于(i=document.form.year2.options.length-1;i>=0;i--) { 文件.表格.年份2.删除(i); } var x

我创建了一个脚本,需要选择一个起始年,然后只显示从该起始年开始的年份->2009。这只是一个从起点到终点的范围选择器

该脚本仅在firefox中可用。我正在学习javascript,所以我希望有人能给我指出正确的方向。现场脚本可在以下位置找到:


功能显示年2(开始年){
//警报(起始年份);
如果(开始年份!=“任何”){
var i;
对于(i=document.form.year2.options.length-1;i>=0;i--)
{
文件.表格.年份2.删除(i);
}
var x=2009;
而(x>=起始年){
var optn=document.createElement(“选项”);
optn.text=x;
optn.value=x;
文件.表格.年份2.选项.添加(optn);
//警报(x);
x--;
}
}
其他的
{
var i;
对于(i=document.form.year2.options.length-1;i>=0;i--)
{
文件.表格.年份2.删除(i);
}
var optn=document.createElement(“选项”);
optn.text=“任何”;
optn.value=“任何”;
文件.表格.年份2.选项.添加(optn);
}//结束其他
}//结束函数
有什么想法吗

谢谢,
尼克

在谷歌上搜索,我发现IE中createElement存在一些问题:


还有一个指向具有解决方法的页面的链接。希望这对你有所帮助。

尽管这不是解决你问题的办法;您引用输入字段的方式不正确:
document.form.year2
应该是
document.getElementById('year2')
。我还注意到您当前的脚本在Opera中工作。

您正在尝试为每个选项设置onclick事件。IE不支持这一点。尝试在select元素中使用onchanged事件

与此相反:

<select name="year1" id="year1">
    <option value="Any" onclick="javascript:display_year2('Any');" >Any</option>
    <option value="2009" onclick="javascript:display_year2(2009);" >2009</option>
    <option value="2008" onclick="javascript:display_year2(2008);" >2008</option>
</select>

任何
2009
2008
试试这个:

<select name="year1" id="year1" onchange="javascript:display_year2(this.options[this.selectedIndex].value)">
    <option value="Any">Any</option>
    <option value="2009">2009</option>
    <option value="2008">2008</option>
</select>

任何
2009
2008
尝试手动设置长度


document.form.year2.options.length=项目数。

它不起作用的原因不在代码片段中:

<OPTION onclick=javascript:display_year2(2009); value=2009>
您可以通过写入options.length来消除循环。另外,最好避免直接从文档中引用元素名称-使用document.forms[]集合或getElmentById:

var year2= document.getElementById('year2');
year2.options.length= 0;
此外:

HTMLCollection.add不是标准的DOM方法。传统的老派做法是:

year2.options[year2.options.length]= new Option(x, x);

我在Firefox中使用onchange时遇到了类似的问题,但在IE和Chrome中都没有。我在我的头牌下面加了一个,一切都很好 (放入meta标签:我必须为这张便条去掉标签,这样它才会出现) meta http equiv=“X-UA-Compatible”content=“IE=edge,chrome=1”


注意:这样做的目的是:始终强制使用最新的IE渲染引擎(即使在intranet中)和Chrome框架,但是:如果您使用.htaccess,请将其删除。感谢您的帮助,此更改适用于所有浏览器。我很高兴。像
onchange
onclick
这样的事件属性不需要
javascript:
。那就解释为标签。看,我正在尝试添加您建议的代码以提高效率,但除了您提供的新snips之外,我不知道应该保留什么和保留什么。你认为你可以把整个剧本都写出来吗?我已经添加了onchange,脚本可以在所有浏览器中运行。泰
var i;
for(i=document.form.year2.options.length-1;i>=0;i--)
{
document.form.year2.remove(i);
}
var year2= document.getElementById('year2');
year2.options.length= 0;
var optn = document.createElement("OPTION");
optn.text = x;
optn.value = x;
document.form.year2.options.add(optn);
year2.options[year2.options.length]= new Option(x, x);