document.getElementById ("someid '). innerHTML =" HI "; у меня не работает - PullRequest
0 голосов
/ 28 ноября 2011

Я не понимаю, как очень хорошо манипулировать DOM. Я использовал

document.getElementById('someid').innerHTML = "HI";

в других местах и ​​работает нормально. Но когда я пошел, чтобы добавить таймер на мою веб-страницу, я не могу использовать выше, чтобы изменить какой-либо текст (таймер). Так что ... я очень смущен. Вы все помогли мне в других проблемах, которые у меня были ... Я много исследую, прежде чем вас всех задавать, но я озадачен и разочарован.

в signupForm.php - SNIPPIT

<title>Perry Computer Services - Signup</title>
<script src="js/commonUtils.js" type="text/javascript"></script>
<script src="js/validation.js" type="text/javascript"></script>
<script src="js/timers.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">window.onload = CreateTimer(30);</script>

в timers.js

function CreateTimer(Time)
{
  alert("Timer created:" + Time);
  document.getElementById('debug1').innerHTML = "WORKS";
  alert("We never get here.");
}

в signupForm.php - SNIPPIT

<form name="form1" method="post" action="signupForm.php?calling_page=validateform" accept-charset="utf-8">
  <table border="0" align="center">
    <tr class="table_top">
      <td class="tbl_col1"><div align="right" id="debug1"></div></td>
      <td class="tbl_col2"><div align="left" id="debug2"></div></td>

Вот что меня смущает. У меня есть другой файл .js, который называется validation.js, и я использую тот же document.getElementById, что и выше, и он работает !!! Я не понимаю!

В validation.js я много изменяю DOM, и он прекрасно работает! Это работает, потому что, когда я изменяю поле, вкладывая в следующее поле , это проблема СФЕРЫ? Если кто-то не знает, что я делаю неправильно, я попытаюсь нарежьте мой validation.js и вставьте его сюда, но он огромен. Почему одна функция работает, а другая в другом файле не работает?

Ответы [ 2 ]

4 голосов
/ 28 ноября 2011

Вы вызываете CreateTimer немедленно и присваиваете его возвращаемое значение (undefined) onload.

В то время, когда вы вызываете его, элемент с указанным идентификатором делаетне существует, и эта строка приводит к ошибкам и останавливает дальнейший запуск сценария.

Назначение функции для загрузки.

 window.onload = function () { CreateTimer(30); };
1 голос
/ 28 ноября 2011

Это проблема времени. Обратите внимание, что на момент оповещения страница пуста, а также обратите внимание, что если после этого вы запускаете команду из консоли, все работает хорошо. Вы пытаетесь изменить элемент, который еще не загружен. Причиной этого является тот факт, что onload настроена неправильно - вы вызываете CreateTimer раньше времени.

Когда вы сталкиваетесь с подобными проблемами, может помочь попытка определить, какая часть огромной линии является проблемой. Например:

alert("Timer created:" + Time);
alert(document.getElementById('debug1'));
alert(document.getElementById('debug1').innerHTML);

Кроме того, использование console.log() вместо alert() также избавит вас от разочарования.

...