Javascript 为什么这一行JS在Firefox中不起作用?
将鼠标悬停在按钮上会更改Chrome中的单选按钮,但不会更改Firefox中的单选按钮Javascript 为什么这一行JS在Firefox中不起作用?,javascript,html,cross-browser,onmouseover,Javascript,Html,Cross Browser,Onmouseover,将鼠标悬停在按钮上会更改Chrome中的单选按钮,但不会更改Firefox中的单选按钮 这是为什么?基本上说,document.all的使用是非标准的 事实上,这是javascript程序员应该避免的。这是大约1997年Internet Explorer 4的遗物!,之所以包括它,是因为当时有一些非常基本的DOM API尚未标准化,例如document.getElementById。如果现代浏览器支持这些旧的domapi中的任何一个,那只是为了与非常旧的程序兼容。WebKit仍将返回docume
这是为什么?基本上说,document.all的使用是非标准的 事实上,这是javascript程序员应该避免的。这是大约1997年Internet Explorer 4的遗物!,之所以包括它,是因为当时有一些非常基本的DOM API尚未标准化,例如document.getElementById。如果现代浏览器支持这些旧的domapi中的任何一个,那只是为了与非常旧的程序兼容。WebKit仍将返回document.all的HTMLCollection类型,这就是为什么您注意到您的代码在Chrome浏览器中工作。但是Firefox的现代版本已经故意决定放弃对它的支持,而是返回未定义的值 这里推荐的方法是使用document.getElementById获取对要控制的元素的引用,您可以向第二对元素添加ID,然后在javascript中的这些元素上注册事件处理程序。document.all仅在Firefox中当页面处于怪癖模式时才起作用,这是您绝对不希望出现的 它是在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的AttacheEvent进行一些研究。使用document.getElementById而不是document。所有的都使用document.getElementById,这应该可以做到 就这样做吧:
使用
FF不支持该document.all,因为它是由IE引入的,并且不是标准DOM
可以找到一个演示
var checkbox = document.getElementById('my-checkbox');
document.getElementById('my-button').addEventListener('mouseover', function() {
checkbox.checked = true;
}, false);
<input value="1 checked" onMouseOver="document.getElementById('myRadioButton1').checked = true;" type="button">
<input value="2 checked" onMouseOver="document.getElementById('myRadioButton2').checked = true;" type="button">