IE8上的元素引用始终为null

时间:2010-01-26 19:45:01

标签: javascript internet-explorer-8 prototypejs

我正在尝试引用提交按钮:

<input name="submit" type="submit" id="submit" tabindex="5" value="Submit" />

试过这个: var submit_btn = $('submit');以及document.getElementByID('submit')。 但它始终评估为null .. 还尝试循环所有表单元素以lastChild到达按钮,但结果是始终null。这是一个已知的错误? 此外,当我尝试通过id引用表单元素时,结果也是null ..

5 个答案:

答案 0 :(得分:2)

我敢打赌IE不喜欢元素“id”属性的值“submit”。请记住,IE希望在“窗口”对象上使用“id”值作为属性名称,并且可能会将“submit”视为保留字。我知道你说你不能改变价值。如果您使用的是jQuery,请尝试$('input[name=submit]')

答案 1 :(得分:0)

  • 您确定页面上只有一个ID为submit的元素吗?
  • 你能给元素一个不同于“提交”的ID吗?我不认为CSS ID中应该有任何保留名称,只是为了确保。

答案 2 :(得分:0)

尝试:

$("input#submit"); 

或:

$("input[type='submit']");

此外,如果提供ID,例如“提交”,这被认为是不好的做法 - 更具描述性:<input id="SubmitRegistration">

请记住使用#selector引用ID - 您在上面的陈述中没有。

另外,请记住将jQuery放在$(document).ready(function() {});内,以确保它在dom加载后运行。

答案 3 :(得分:0)

我假设美元函数是Prototype库?如果没有,在JQuery中,调用应该是$('#submit')

或者,您是否正在<script>代码中直接尝试?您可能必须将代码包装在onLoad回调中。如果不这样做,您的浏览器可能会在页面完全加载之前执行脚本,并且您的元素仍可能从DOM中丢失。例子:

原型:

Event.observe(window, 'load', function() {
    // your code
});

对于JQuery:

$(document).ready(function() {
    // your code
});

答案 4 :(得分:0)

刚遇到类似的IE8问题。当通过JS访问时,大多数输入元素在表单内是null。这是标记:

<p>
  <form styleId="districtReportForm" method="post" onsubmit="return false;">
    <input name="reportType" value="0" type="hidden"> 
    <input name="districtId" value="30001176" type="hidden">

除IE8外,其他一切都很好。在IE8中,在'reportType'之后,表单中没有元素。例如,在按ID获取表单后,form.districtId为空。

所以我跑了:

dojo.byId('districtReportForm').innerHTML

要了解IE的想法,并报告:

"<INPUT name=reportType value=0 type=hidden> </P>" 

显然,IE已决定为我关闭开幕<p>(诚然,它没有正确关闭)。删除段落元素修复此问题。