getElementById выдаёт null
<script type="text/javascript">
var countAddedDates = 0;
var currentCountDates = 5;
// var lastBodyChild = document.getElementById("button1");
// document.body.appendChild(lastBodyChild);
alert("Hello world");
var ar1 = document.getElementsByTagName("div");
var ar2 = document.getElementsByTagName("input");
var ar3 = document.getElementsByTagName("button");
alert(ar1.length);
alert(ar2.length);
alert(ar3.length);
for (var i = 0;i< ar.length;i++)
alert(ar[i]);
function showSelect2(){
document.getElementById("div2").hidden=false;
if (document.getElementById("sl1").value=="ss1")
document.getElementById("sl2").hidden = false;
else document.getElementById("sl2").hidden = true;
}
function appendDates() {
var arr = [];
for(var i = 0;i < 16;i++){
arr[i] = createDateElement();
}
var currentId1 = countAddedDates;
var currentId2 = countAddedDates+1;
document.body.appendChild(arr[currentId1]);
document.body.appendChild(arr[currentId2]);
// document.body.insertBefore(arr[currentId2], document.body.lastChild);
countAddedDates +=2;
}
function createDateElement() {
var container = document.createElement('input');
container.id = "date" + currentCountDates;
container.type = 'date';
currentCountDates++;
return container;
}
</script>
<body bgcolor="#deb887">
<div id="div1" name="div1">
<div>
<label><strong>Выберите вид обжалуемого документа</strong></label>
<br><br>
<select id="sl1" name="selectnum1" onchange="showSelect2()" autofocus="autofocus">
<option selected disabled>------Г Р А Ж Д А Н С К О Е С У Д О П Р О И З В О Д С Т В О------ </option>
// и ещё куча <option>...
</select>
<br><br>
<select id="sl2" name="selectnum2" hidden>
</select>
</div>
<br><br>
<div id="div2" name="div2" hidden="true">
<label><strong>Дата 1</strong></label><br><br>
<input id="date1" type="date"><br><br>
<label><strong>Дата 2</strong></label>
<br><br>
<input id="date2" type="date">
<br><br>
*Срок ... с <label><strong>Дата 3 </strong></label> <input id="date3" type="date"><label><strong> до Дата 4 </strong></label>
<input id="date4" type="date"> <button id="button1" onclick="appendDates()">+</button>
<br><br>
<label><strong>*Дата возобновления течения срока исковой давности после перерыва </strong></label>
<input id="date21" type="date">
<button id="button2" onclick="calculate()" style="color: beige">Рассчитать</button>
</div>
</div>
</body>
собственно когда срабатывает onchange у <select id="sl1" функция showSelect2 отрабатывает правильно и функция document.getElementById отрабатывает в ней верно. А когда я в начале скрипта пишу: var ar1 = document.getElementsByTagName("div"); var ar2 = document.getElementsByTagName("input"); var ar3 = document.getElementsByTagName("button"); alert(ar1.length); alert(ar2.length); alert(ar3.length); функции document.getElementsByTagName, document.getElementById, document.getElementByName почему то не видят элементов моей страницы. Изучаю JS всего 6 дней, поэтому однозначно я тут чего то простого не понимаю. Помогите пожалуйста! |
EmperioAf,
у вас нет переменной ar и ещё нет на странице никаких элементов чтоб искать их -- сам скрипт в конец страницы |
Цитата:
var ar1 = document.getElementsByTagName("div"); var ar2 = document.getElementsByTagName("input"); var ar3 = document.getElementsByTagName("button"); alert(ar1.length); alert(ar2.length); alert(ar3.length); выдают нули. Чтобы добавить свои элементы типа <input type="date"> в любое место на странице мне нужен доступ к любому элементу, который стандартно получается с помощью: document.getElementsByTagName, document.getElementById, document.getElementByName но, когда я ставлю эти функции в начало скрипта, они почему то выдают null и ни один из моих html элементов не находят. |
<script>
alert( document.getElementById("test") );
</script>
<input id="test">
<script>
alert( document.getElementById("test") );
</script>
|
Цитата:
Может быть у меня что то не подключено? |
То есть скрипт всегда должен быть после HTML-тегов и только тогда он работает корректно?
Спасибо. |
EmperioAf,
или в window.onload |
EmperioAf, это потому что к моменту срабатывания скрипта элемента на странице ещё. Либо в конец страницы ставь скрипты, либо оборачивай в события: load или DOMContentLoaded.
|
| Часовой пояс GMT +3, время: 11:43. |