0.style是null或不是aobject

时间:2013-07-28 11:07:18

标签: javascript jquery jquery-ui internet-explorer internet-explorer-8

我在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事件的选择框中选择值时,将调用上述函数。通过在选择框中选择房间类型,将显示两个单选按钮。这在谷歌Chrome和Mozilla工作正常。但是在Internet explorer8中我遇到了错误       0.style为null或不是对象。 而不是显示单选按钮。

提前致谢!

2 个答案:

答案 0 :(得分:2)

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

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

Documentation for the p tag表示名称属性不属于此标记的标准属性;因此它是一个扩展属性。因此,虽然Mozilla和Chrome对这种扩展的属性和工作感到满意;在您的Javascript中设置document.expando=true之前,IE将无法识别此属性。请注意,这需要通过检查浏览器名称来有条件地完成。

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

答案 1 :(得分:0)

在您的页面中检查您有HTML喜欢,

<input type='radio' name="radios" id='radio1'/>
<input type='radio' name="radios" id='radio2'/>