为什么这一行JS在Firefox中不起作用
Why does this one-line JS not work in Firefox?
http://jsfiddle.net/Gch83/
<input id="myRadioButton1" name="radiobutton" value="radiobutton" type="radio">1
<input id="myRadioButton2" name="radiobutton" value="radiobutton" type="radio">2
<input value="1 checked" onMouseOver="document.all.myRadioButton1.checked = true;" type="button">
<input value="2 checked" onMouseOver="document.all.myRadioButton2.checked = true;" type="button">
将鼠标悬停在按钮上会更改Chrome中的单选按钮,但不会更改Firefox。
为什么会这样?
不要使用document.all
,而应该使用document.getElementById()
!
使用
<input value="1 checked" onMouseOver="document.getElementById('myRadioButton1').checked = true;" type="button">
<input value="2 checked" onMouseOver="document.getElementById('myRadioButton2').checked = true;" type="button">
原因是document.all
不受FF支持,因为它是由IE引入的,并且不是标准的DOM。
演示可以在这里找到。
使用document.getElementById(id)
而不是document.all
只需这样做:
http://jsfiddle.net/duante/Gch83/2/
document.all
只有在页面处于怪癖模式时(这是你绝对不想进入的模式(才能在Firefox中工作。
不要使用document.all
。
它创建于W3C标准化getElementById()
之前。
document.all
是Microsoft Internet Explorer 的专有功能
来源。
请改用符合W3C标准的现代方法。
var checkbox = document.getElementById('my-checkbox');
document.getElementById('my-button').addEventListener('mouseover', function() {
checkbox.checked = true;
}, false);
你需要对IE的CCD_ 10做一些研究。
基本上说,文档.all的使用是非标准的。
事实上,这是javascript程序员应该避免的事情。它是InternetExplorer4(大约1997年!(的遗迹,之所以被包括在内,是因为当时有一些非常基本的DOM API尚未标准化(例如document.getElementById(。如果现代浏览器支持这些旧的DOM API中的任何一个,那只是为了与非常旧的程序兼容。WebKit仍然会返回document.all的HTMLCollection类型,这就是为什么您注意到您的代码可以在Chrome浏览器中工作的原因。但现代版本的Firefox已经故意决定放弃对它的支持,而是返回未定义的值。
这里推荐的方法是使用document.getElementById来获取对要控制的元素的引用(您可以向第二对元素添加id(,然后从javascript在这些元素上注册事件处理程序。
- JS可以在Chrome中工作,但不能在Firefox中工作
- 重载JS'firefox中的对象原型
- JS在firefox中无法正常工作
- 为什么firefox开发人员控制台引用script.js
- js禁用firefox中的退格功能
- HTML/JS github页面项目没有't在使用firefox运行时加载图像或声音
- 将epub.js集成到firefox中,作为.epub的默认读取器
- Angular js$Interval怪异行为-Firefox Chrome
- d3.js散点图中的刻度标签在Firefox 13.0.1中被截断
- JS适用于Firefox和Safari,但不适用于Chrome.此处'是我的网站
- 如何使用注入Firefox控制台的js文本来更改网站的背景图像-示例提供
- Chrome没有请求JS源地图,但Firefox请求
- 在扩展崩溃Firefox中使用JS-ctypes
- 在 chrome 或 Firefox 中的调试控制台对.js文件运行 JSLint
- 在 Firefox 中加载带有 require.js 的文本文件失败:“AccessControlException”
- 如何检查Firefox是否使用asm.js代码
- Three.js效果使用firefox但不使用chrome
- Impress.js+Firefox:如何禁用鼠标点击时的高级幻灯片
- d3.js firefox鼠标事件结束
- Dropzone.js firefox compatibility