Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   ошибка в ie 6-7 с getElementById (https://javascript.ru/forum/css-html-internet-explorer/11137-oshibka-v-ie-6-7-s-getelementbyid.html)

Marv 09.08.2010 13:06

ошибка в ie 6-7 с getElementById
 
Недавно освоил javascript, сегодня понадобился простой скрипт, который меняет местами картинки, но на первых порах столкнулся с ошибкой.
Ищу элемент по его id, во всех браузерах кроме ie код работает. В ie: объект не поддерживает данное свойство или метод.
function change(id)
	{		
		color=document.getElementById(id);
		current=document.getElementById('replace');//ругается на эту строку
		
		current.src=color.src;
	}

функция вызывается так:
<td>
  <div id="other-images">
    <img onclick="change(this.id)" id="color0" src="/img/2.jpg" border="0" alt="some img">					
  </div>
</td>
<td>
  <div id="main-image">
   <img id="replace" src="/img/1.jpg" border="0" alt="some img">
  </div>
</td>

html проверил: одинаковых id нет, имени такого нет. Ругается вообще на любой вызов document.getElementById('//с любым строковым параметром')

Sweet 09.08.2010 13:34

Оффтоп: не проще ли сделать так:
<img onclick="document.getElementById('replace').src=this.src;" src="/img/2.jpg" border="0" alt="some img">

По теме, я хз..

Marv 09.08.2010 15:10

Проще, но я планировал на функцию больше операций возложить. А на document.getElementById('replace').src=this.src; всё равно ругается

Sweet 09.08.2010 15:54

Тогда не нужно передавать в функция this.id, чтобы потом через него получать элемент. Т.е.
function change(elem) {		
  current=document.getElementById('replace');
  current.src=elem.src;
}

И вызывайте функцию onclick="change(this)"

Marv 09.08.2010 18:51

Цитата:

Сообщение от Sweet (Сообщение 66833)
Тогда не нужно передавать в функция this.id, чтобы потом через него получать элемент. Т.е.
function change(elem) {		
  current=document.getElementById('replace');
  current.src=elem.src;
}

И вызывайте функцию onclick="change(this)"

Спасибо за подсказку, кстати с ie тоже разобрался, надо было var добавить:
var current = document.getElementById('replace');


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