即时创建Div,高于其他人

时间:2011-12-04 00:45:24

标签: php javascript ajax html

此脚本每秒都会使用AJAX打开一个页面,并将内容返回到此页面上的新div中,它将动态创建。但不幸的是,他们互相攻击。我想在顶部创建每个新的div。我真的不想使用jquery或类似的东西。

对此有任何帮助非常感谢,我对JS不太自信,所以如果不明白为什么,请你给我一个小解释。 :)谢谢

function timedCount()
{
  min = Math.floor(s/60);
  sec = s-(min*60);
  if(sec < 10) { sec = '0'+sec; }
  if(min >= 60) { min = min-15; }
  if(quit == 0) { document.getElementById('mTime').innerHTML = min+':'+sec; }
  s=s+1;
  var ajaxRequest;
  try { ajaxRequest = new XMLHttpRequest(); }  catch (e){
    try{ ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {
      try{ ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e){
        alert("Your browser broke!");
  return false;
      }
    }
  }
  ajaxRequest.onreadystatechange = function()
  {
    if(ajaxRequest.readyState == 4 && ajaxRequest.responseText != '')
   {
        if(ajaxRequest.responseText == 'HT') {
        document.getElementById('mTime').innerHTML = 'Half Time';
        t=setTimeout("timedCount()",(3600-s)*1000);
        quit=1;
       return;
    }
    if(ajaxRequest.responseText == 'FT') {
      document.getElementById('mTime').innerHTML = 'Full Time';
      quit=1;
      return;
    }
    el = document.createElement('rep'+i);
    el.innerHTML = ajaxRequest.responseText +'<br>';
    document.getElementById('container').appendChild(el);
    i=i+1;
  }
}
ajaxRequest.open("GET", "getMatch.php", true);
ajaxRequest.send(null);
}

4 个答案:

答案 0 :(得分:4)

您是否尝试过使用insertBefore

您可以更改该行:

document.getElementById('container').appendChild(el);

通过

var container = document.getElementById('container');
container.insertBefore(el, container.firstChild);

container.firstChild将为您提供容器中第一个元素的引用,并将el放在其前面。

答案 1 :(得分:3)

您需要insertBefore功能

var parent = document.getElementById('container');
parent.insertBefore(el, parent.firstChild);

请注意,如果parent为空,并且parent.firstChild因此为null,则el将插入parent的末尾,这是您想要的。

答案 2 :(得分:1)

appendChild方法总是在集合的 end 处添加新节点,这就是它出现在底部的原因 - 请参阅http://msdn.microsoft.com/en-us/library/ms535934(v=VS.85).aspx

使用此处记录的insertBefore方法:http://msdn.microsoft.com/en-us/library/ms535934(v=VS.85).aspx。您可以使用document.getElementById('container')。firstChild作为第二个参数

答案 3 :(得分:0)

通常如果我真的想把div放在所有其他元素之上,我会使用css位置和z-index,如:

div{
position: absolute;
z-index: 9999;
}

:)