Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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 为什么这一行JS在Firefox中不起作用?_Javascript_Html_Cross Browser_Onmouseover - Fatal编程技术网

Javascript 为什么这一行JS在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

将鼠标悬停在按钮上会更改Chrome中的单选按钮,但不会更改Firefox中的单选按钮


这是为什么?

基本上说,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">