Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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
Javascript document.getElementById(“”).length=0在Win7下不工作_Javascript_Select_Collections - Fatal编程技术网

Javascript document.getElementById(“”).length=0在Win7下不工作

Javascript document.getElementById(“”).length=0在Win7下不工作,javascript,select,collections,Javascript,Select,Collections,我有一个选择列表: <select id="sel"> <option>text1</option> <option>text2</option> <option>text3</option> <option>text4</option> </select> 但这在某些浏览器中不起作用。 有什么想法吗 谢谢 从评论中删除: 您应该更像一

我有一个选择列表:

<select id="sel">
     <option>text1</option>
     <option>text2</option>
     <option>text3</option>
     <option>text4</option>
</select>
但这在某些浏览器中不起作用。 有什么想法吗

谢谢

从评论中删除: 您应该更像一个只读属性来理解这样的长度属性,它为您提供有关对象状态的信息。比如当你得到一个数组的长度。但是,更改该值不会影响实际对象,而正确删除元素将导致浏览器重新呈现该元素的DOM,并因此更新该值。我猜一些浏览器可能会解释将长度设置为零将清除该对象,但一般来说,这不应该是预期的行为。另外,我认为Element.length实际上不是DOM规范的一部分

为了添加一些引用,核心没有任何长度参数。和都可以通过HTMLSelectElement.options访问,它们都有一个length属性,但设置该属性会引发DomeException

因此,在这两种情况下,根据标准设置长度都是非法的,因此,如果您想支持大多数浏览器,则不应使用这种设置。

以下两种方法之一:

document.getElementById('sel').options.length = 0;


谢天谢地,它是有效的:你能解释一下为什么有些浏览器不理解长度方法吗?@Syom:你试图设置select元素的长度;您需要设置其选项数组的长度,请参见我的答案以获取示例,但是innerHTML版本也可以正常工作。将0指定给长度确实会改变数组。length也是用于HTMLCollection的DOM 1规范的一部分:您是对的,它被标记为只读。我将注释移到了答案中,并添加了一些引用。在DOM元素上设置length属性确实毫无意义,因为它没有。设置数组的length属性绝对是更改其长度的有效且正确的方法;请参见规范第15.4节:*…每当更改length属性时,名称为数组索引且其值不小于新长度的每个属性都会自动删除。@T.J.Crowder document.getElementById'sel'。options.length=0;我试过了,不是吗work@Syom:在我尝试过的任何浏览器中都对我有效:你在使用什么?@Syom:对我有效,Chrome 2、3和4没有1.0,全部是Windows Server 2003。你在用什么操作系统?@Crescent-Fresh-Windows-Seven。谷歌Chrome4.1.249.1064操作系统会有什么影响吗?在Chrome4.1.249中对我来说很好。options.length=0是清空select的标准规范方法,可以追溯到远古的Netscape 2,因此如果有浏览器破坏了它,那将是一个惊喜。
document.getElementById( 'sel' ).innerHTML = '';
document.getElementById('sel').options.length = 0;
document.getElementById('sel').innerHTML = "";