Javascript проблема - периодически не удается найти элемент, используя getElementById - PullRequest
1 голос
/ 08 декабря 2010

У меня проблема с некоторым написанным мной JavaScript, который работает только с перерывами. Я не знаю много о том, как все работает в DOM, но я подозреваю, что JS, который я написал, пытается получить доступ к элементу в DOM, прежде чем он существует. Я написал JS, чтобы добавить его в форму сборки. У меня нет доступа к фактическому коду в форме для внесения изменений, я могу только вносить изменения в 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 ]

3 голосов
/ 08 декабря 2010

Похоже, что некоторые из 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 голос
/ 08 декабря 2010

Проверил HTML страницы и обнаружил, что нет элемента HTML с идентификатором wfPageNextId1. Какой элемент на странице вы пытаетесь открыть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...