В фф и опере работает всё нормально.
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)) ;
Как можно сделать, чтоб так выводилось нормально, а не хтмл кодом?