Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: getElementById не видит ID'а
 
 автор: Organ   (23.06.2006 в 09:41)   письмо автору
 
 

Проблема простая и уверен известная, но что то никак не могу решение найти. Не кидать тухлыми яйцами если такая тема была.

Есть код типа


<script>
function test() {
  document.getElementById('somediv').innerHTML = 'TEST';
}
</script>

<button name="testBtn" onClick="test();"></button>

<div id="somediv">
</div>



Так вот в этом случае getElementById не видит somediv, видимо потому, что тот был объявлен ниже, чем вызов.

Но мне необходимо вызвать функцию, обрабатывающую somediv именно выше. Как увидеть этот Id. Спасибо.

   
 
 автор: valenok   (23.06.2006 в 09:44)   письмо автору
 
   для: Organ   (23.06.2006 в 09:41)
 

Сам div
загружается после скрипта.
Тоесть скрипт его сначала не видит, потом вырубается и только тогда повляется твой duv.

Вывод: надо переставить div до скрипта.
Ну такое только в IE, но надо не забывать что более 80% пользователей инета им и пользуются..


<button name="testBtn" onClick="test();"></button> 

<div id="somediv"> 
</div>

<script> 
function test() { 
  alert(document.getElementById('somediv').innerHTML = 'TEST'; 

</script> 

   
 
 автор: valenok   (23.06.2006 в 09:46)   письмо автору
 
   для: valenok   (23.06.2006 в 09:44)
 

alert(document.getElementById('somediv').innerHTML = 'TEST';
Чтото не пойму такой конструкции.
Может я просто скобки не досчитал или это не совсем то что вы хотели бы?

   
 
 автор: valenok   (23.06.2006 в 09:47)   письмо автору
 
   для: valenok   (23.06.2006 в 09:46)
 


<input type="button" name="testBtn" onClick="test();">
<div id="somediv"> </div> 

<script> 
function test() { document.getElementById('somediv').innerHTML = 'TEST'; } 
</script>


Наверное вы хотели это..

   
 
 автор: Organ   (23.06.2006 в 10:02)   письмо автору
 
   для: valenok   (23.06.2006 в 09:47)
 

Да да alert( бы лишний. Переставил, все равно не видит его. Код например такой:


<form name="paramForm" id="paramForm">
<select name="group" onchange="requestValues();">
  <option value="group1">group1
  <option value="group2">group2
</select>

<select name="field">
  <div id="fields">
  
  </div>
</select>
</form>

<script>
function requestValues() {
  if (document.paramForm.group.value == 'group1')
    document.getElementById('fields').innerHTML = '<option value="val1">val1<option value="val2">val2';
  else 
    document.getElementById('fields').innerHTML = '<option value="val3">val3<option value="val4">val4';
}
</script>


Не видит, потому что похоже функция то все равно вызвается до нужного div'а, неважно где она определена

   
 
 автор: Organ   (23.06.2006 в 10:14)   письмо автору
 
   для: Organ   (23.06.2006 в 10:02)
 

И не работает даже так почему то!


<form name="paramForm" id="paramForm">
<select name="field" size=1 class="editfield">
  <div id="fields">
  
  </div>
</select>
<br>
<select name="group" size=1 class="editfiled" onchange="requestValues();">
  <option value="group1">group1
  <option value="group2">group2
</select>
</form>

<script>
function requestValues() {
  if (document.paramForm.group.value == 'group1')
    document.getElementById('fields').innerHTML = '<option value="val1">val1<option value="val2">val2';
  else 
    document.getElementById('fields').innerHTML = '<option value="val3">val3<option value="val4">val4';
}
</script>

   
 
 автор: valenok   (23.06.2006 в 10:14)   письмо автору
 
   для: Organ   (23.06.2006 в 10:02)
 

Может и так.
Я просто не уверен что можно совать div в селект.

Почему бы вам не сделать :


<form name="paramForm" id="paramForm"> 
<select name="group" onchange="requestValues();"> 
  <option value="group1">group1 
  <option value="group2">group2 
</select> 

<select name="field" id='sel'> 

</select> 
</form> 

<script> 
function requestValues() { 
  if (document.paramForm.group.value == 'group1') 
 {document.getElementById('sel').innerHTML = '<option value="val1">val1<option value="val2">val2';} 
else 
    {document.getElementById('fields').innerHTML = '<option value="val3">val3<option value="val4">val4'; }

</script>

   
 
 автор: kaoz   (23.06.2006 в 10:19)   письмо автору
 
   для: valenok   (23.06.2006 в 10:14)
 

в яваскрипте не очень шарю... но видел в сетке решение подобной проблемы
вот урл: http://www.lessio.ru/css-js/4/

   
 
 автор: Organ   (23.06.2006 в 10:21)   письмо автору
 
   для: valenok   (23.06.2006 в 10:14)
 

Да дело было в том, что div нельзя совать внутрь селекта. Хотя так тоже не работает, но выведу селект целиком.. Спасибо.

   
 
 автор: valenok   (23.06.2006 в 10:35)   письмо автору
 
   для: Organ   (23.06.2006 в 10:21)
 

Раз вы уж выводите весь селект.
Может их стоит заранее все вывести но отображать только нужный при помощи: display:none; ?

   
 
 автор: Organ   (23.06.2006 в 10:58)   письмо автору
 
   для: valenok   (23.06.2006 в 10:35)
 

Да не, у меня там ajax реализован, лишние данные не выводятся, а запрашиваеются с сервера.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования