Javascript问题 - 使用getElementById间歇性地找不到元素

时间:2010-12-07 22:41:45

标签: javascript forms dom

我遇到一些问题,我写的只是间歇性地工作。我不太了解DOM中的工作方式,但我怀疑我编写的JS是在它存在之前尝试访问DOM中的元素。我编写了JS来将它添加到formassembly表单中。我无法访问表单中的实际代码来进行更改,我只能进行JS更改。

以下是表单http://www.tfaforms.com/186347

的链接

这是我在文档加载时使用的javascript

 window.onload=function() {

document.getElementById("submit-").style.visibility = "hidden";
document.getElementById("wfPageNextId1").value="Calculate";
document.getElementById('wfPageNextId1').setAttribute('onclick', 'Calculate2011()')

}

我收到错误,说wfPageNextId1为null且无法调用setAttribute。

非常感谢任何帮助。 提前谢谢。

2 个答案:

答案 0 :(得分:3)

看起来有些DOM是由其他脚本动态创建的。您可以通过以下方式延迟元素存在:

function initializeForm() {
   var submit = document.getElementById("submit-"),
       nextPage = document.getElementById("wfPageNextId1");
   if (submit && nextPage) {
      submit.style.visibility = "hidden";
      nextPage.value = "Calculate";
      nextPage.setAttribute('onclick', 'Calculate2011()');
   } else {
      // try again in 1 second
      setTimeout(initializeForm, 1000);
   }
}

window.onload = function() {
   initializeForm();
};

您还应该确保您没有查看其他脚本中定义的任何window.onload

if (window.onload) {
   var currentOnload = window.onload;
   window.onload = function() { currentOnload(); initializeForm(); };
} else {
   window.onload = function() { initializeForm(); };
}

答案 1 :(得分:1)

检查页面HTML并且实际上没有id为wfPageNextId1的HTML元素。 您尝试访问的页面上的元素是什么?