我遇到一些问题,我写的只是间歇性地工作。我不太了解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。
非常感谢任何帮助。 提前谢谢。
答案 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元素。 您尝试访问的页面上的元素是什么?