这不是一个真正的问题,而是一个答案,可以让其他人免于追踪这个讨厌的错误。我浪费了几个小时才发现这一点。
当使用 options.length = 0;
重置 safari 中选择元素的所有选项时,您可能会得到不同的结果,具体取决于您是否打开了 Web 检查器。
如果 Web 检查器打开,您使用 myElement.options.length = 0;
并在查询 options.length()
之后,您可能会返回 1 而不是 0(预期),但前提是 Web 检查器处于打开状态(在调试此类问题时通常会出现这种情况)。
解决方法:
关闭 Web 检查器或像这样调用 myElement.options.length = 0;
两次:
myElement.options.length = 0;
myElement.options.length = 0;
测试用例:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Testcase</title>
<script type="text/javascript" language="javascript" charset="utf-8">
function test(el){
var el = document.getElementById("sel");
alert("Before calling options.length=" + el.options.length);
el.options.length = 0;
alert("After calling options.length=" + el.options.length);
}
</script>
</head>
<body onLoad="test();">
<p>
Make note of the numbers displayed in the Alert Dialog, then open Web inspector, reload this page and compare the numbers.
</p>
<select id="sel" multiple>
<option label="a----------" value="a"></option>
<option label="b----------" value="b"></option>
<option label="c----------" value="c"></option>
</select>
</body>
</html>
最佳答案
关闭 Web Inspector 或调用 myElement.options.length = 0;两次这样:
myElement.options.length = 0;
myElement.options.length = 0;
关于javascript - Safari 中的错误 : options. 长度 = 0;在 Safari 4 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2432291/