<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。
为什么会这样?
答案 0 :(得分:3)
Don't Use document.all
改为使用document.getElementById()
应该做的伎俩!
答案 1 :(得分:2)
使用document.getElementById(id)
代替document.all
答案 2 :(得分:2)
答案 3 :(得分:2)
使用
<input value="1 checked" onMouseOver="document.getElementById('myRadioButton1').checked = true;" type="button">
<input value="2 checked" onMouseOver="document.getElementById('myRadioButton2').checked = true;" type="button">
reason是FF不支持document.all
,因为它是由IE引入的,不是标准DOM。
可以找到演示here。
答案 4 :(得分:1)
基本上说,使用 document.all 是非标准的。
事实上,这是javascript程序员应该避免的。它是Internet Explorer 4(大约1997年!)的遗留物,并且被包括在内,因为当时还有一些非常基本的DOM API尚未标准化(例如 document.getElementById )。如果现代浏览器支持任何这些旧的DOM API,那么它只是为了与非常旧的程序兼容。 WebKit仍将为 document.all 返回HTMLCollection类型,这就是您注意到您的代码在Chrome浏览器中有效的原因。但现代版本的Firefox故意决定放弃对它的支持,而是返回 undefined 值。
这里推荐的方法是使用 document.getElementById 来获取你想要控制的元素的引用(你可以将id添加到第二对元素),然后注册事件来自javascript的那些元素的处理程序。
答案 5 :(得分:1)
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 attachEvent()
进行一些研究。