Показать сообщение отдельно
  #8 (permalink)  
Старый 07.07.2008, 05:46
Новичок на форуме
Отправить личное сообщение для nvbn Посмотреть профиль Найти все сообщения от nvbn
 
Регистрация: 02.07.2008
Сообщений: 9

В фф и опере работает всё нормально.
function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}

function x_r(lnk,id) {
var xmlhttp = getXmlHttp()
xmlhttp.open('GET', lnk, true);
xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
    	 document.getElementById(id).innerHTML  = xmlhttp.responseText;
         }
  }
};
xmlhttp.send(null);
}

function d_c(d,n_id,el) {
	var alien;
	var attr;
	attr = document.createAttribute("id");
	attr.value=n_id;
	var enemy = document.getElementById(d); 
	alien = document.createElement( el );
	alien.setAttribute( attr );
	enemy.appendChild( alien );
}


И это вызывается
d_c('t_1','f_1','span');
x_r('own.php?id=1','f_1');

Самое главное, что firebug'у всё нравится

На другой машине поставил ie 8b1 (там есть js дебагер), и он мне выдал ошибку:
http://javascript.ru/forum/attachmen...1&d=1215411866
И указал на строчку:
document.getElementById(id).innerHTML  = xmlhttp.responseText;

Я как понял, он хочет работать с элементом, который ещё не создался, как это можно избежать??

Сделал такую фишку:
function d_c(d,n_id,el) {
	var alien; alert('1');
	var attr; alert('2');
	attr = document.createAttribute("id"); alert('3');
	attr.value=n_id; alert('4');
	var enemy = document.getElementById(d); alert('5');
	alien = document.createElement(el); alert('6');
	alien.setAttribute( attr ); alert('7');
	enemy.appendChild( alien ); alert('8');
}

И вот, в фф и опере алертами доходит до 6-ти (включительно) , но скрипт выполняется правильно, но дом инспектор не видит появившийся элемент, что странно. В ие доходить как и нужно до 8-ми, но скрипт не работает.

Всё, заработало)))))), код:
function d_c(d,n_id,el) {
	var enemy = document.getElementById(d); 
	var bax = document.createElement(el);
	bax.setAttribute('id', n_id);
	enemy.appendChild(bax); 
}

Но писать приходится не innerHTML, а
document.getElementById(id).appendChild( document.createTextNode(xmlhttp.responseText)) ;

Как можно сделать, чтоб так выводилось нормально, а не хтмл кодом?
Изображения:
Тип файла: jpg e_1.JPG (18.4 Кб, 9 просмотров)

Последний раз редактировалось nvbn, 07.07.2008 в 13:00.
Ответить с цитированием