0

我以以下方式在java脚本中有代码。

function changeRoomType()
{

var rtype = document.getElementById('typeofroom').value;
var ps = document.getElementsByName('radios');
if(rtype == 'sb' || rtype == 'db')
{
    ps[0].style.display = 'block';
    ps[1].style.display = 'block';
}
else
{
    ps[0].style.display = 'none';
    ps[1].style.display = 'none';
}
}

我的html代码是

<p style="position: absolute; float: left; bottom: 138px; width: 50px; left: 359px;display:none;"
   name='radios'>
  <label for="class">Superior</label>
  <input type="radio" name="radio" id="class" value="s" tabindex="1" style="float:left; width:25px;background-color:transparent !important;"/>
</p>
<p style="position: absolute; float: left; bottom: 138px; width: 50px; left: 287px;display:none;"
   name='radios'>
  <label for="class2">Premier</label>
  <input type="radio" name="radio" id="class2" value="p" tabindex="1" style="float:left; width:25px;background-color:transparent !important;"/>
</p>

当在写入 onchange 事件的选择框中选择值时调用上述函数。通过在选择框中选择房间类型,将显示两个单选按钮。这在谷歌浏览器和 Mozilla 中运行良好。但在 Internet explorer8 中,我收到错误
0.style is null or not an object。 并且不显示单选按钮。

提前致谢!

4

2 回答 2

2

相关的问题和解决方案发布在这里。请参阅getElementsByTagName 上的 MSDN 文档。MSDN 上的这篇文档讨论了getElementsByName的行为受 **expando ** 属性的影响。

通过控制expando属性,可以定义 IE 如何处理不属于 HTML 元素的标准属性集的属性。请参阅MSDN 上的 Expando

p 标签的文档表明name属性不是该标签的标准属性的一部分;因此它是一个扩展属性。因此,虽然 Mozilla 和 Chrome 对这种扩展的属性和工作感到满意;document.expando=true在您设置 Javascript之前,IE 不会识别此属性请注意,这需要通过检查浏览器名称有条件地完成。

作为事后的想法 - 你为什么不使用 jQuery 来执行这样的 DOM 操作?您将从编写跨浏览器兼容的 javascript 代码的偏头痛中解脱出来,并将专注于您的网站功能。

于 2013-07-28T12:04:13.993 回答
0

签入您HTML喜欢的页面,

<input type='radio' name="radios" id='radio1'/>
<input type='radio' name="radios" id='radio2'/>
于 2013-07-28T11:19:45.420 回答