Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Скрипт выполняется только в Опере (https://javascript.ru/forum/events/48340-skript-vypolnyaetsya-tolko-v-opere.html)

klk.pma 30.06.2014 09:37

Скрипт выполняется только в Опере
 
Добрый день!
Для ajax использую JsHttpRequest, все скрипты подключаются в HEAD.
<head>
  ...
  <script src="/JHR/JsHttpRequest.js"></script>
  <script src="/js/jscript.js" type="text/javascript"></script>
  ...
</head>

В jscript.js есть функция:
function tabload() {
	 JsHttpRequest.query(
         '../ajax/tabback.php',
         {
	     'table': document.getElementById("table").value
         },
         function(result, errors) {
	     if(result["tabj"]) {
		    document.getElementById("tab").style.display='';
		    document.getElementById("tab").innerHTML = result["tabj"];
         } else {
		    document.getElementById("tab").style.display='none';
	     }
         },
         false
     );
}

, которая вызывается следующим образом:
<select id="table" name="list" onchange="tabload(this.value);" class="addtab">
<option value="no"> Выберите таблицу </option>
<option value="1"> Таблица №1 </option>
<option value="2"> Таблица №2 </option>
</select>
<div id="tab" style="display:;"></div>


Все это успешно работает в Опере, но ни фига неработает в IE, Chrome и Firefox. Если загружать файл jscript.js в конце body, тогда все работает во всех браузерах. Но я не вижу явных причин почему функция не вызывается при загрузке в HEAD.

Пожалуйста, подскажите, почему так происходит?

WorM32 30.06.2014 11:23

Скорее всего в jscript.js исполняется код, который пытается получить доступ к элементу, которого еще нет в DOM.

klk.pma 30.06.2014 12:25

Цитата:

Сообщение от WorM32 (Сообщение 318794)
Скорее всего в jscript.js исполняется код, который пытается получить доступ к элементу, которого еще нет в DOM.

Да вы правы. Файл jscript коряво написал


Часовой пояс GMT +3, время: 11:50.