javascript - Safari 中的错误 : options. 长度 = 0;在 Safari 4 中无法正常工作

标签 javascript safari google-chrome webkit

这不是一个真正的问题,而是一个答案,可以让其他人免于追踪这个讨厌的错误。我浪费了几个小时才发现这一点。

当使用 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/

相关文章:

javascript - Safari 5.1.4 showModalDialog 返回未定义

JQuery keyup 阻止 Chrome 中的文本选择。怎么解决?

javascript - a.nodeName is undefined Jquery错误

javascript - hammer-time.min.js 包含未定义的函数 hasTouchNone

javascript - Google Apps脚本正则表达式解析地址: Unable to match embedded newline

javascript - <img/> 标签的 onLoad 事件在初始页面访问时不会触发

css - 关于超链接颜色的奇怪浏览器问题(iMac 上的 Firefox 与 Safari)

javascript - 通信 JQuery 和 C#

css - <h1> 到 <h6> 标签没有在 Chrome 中显示?

javascript - 检测文档何时关闭