1

次のコードを5秒ごとに実行していますが、コンテンツは一度にブロックとして表示されます。理想的には、ループするたびにDOMに書き込む必要がありますか?したがって、配列の各値には独自のdivが必要ですか?

function newfunction() {
    var obj;
    var xmlhttp;
    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            obj = JSON.parse(xmlhttp.responseText);

            for (var i = 0, n = obj.length; i < n; i++) {
                var divTag = document.createElement("div");
                divTag.id = "div" + i;
                divTag.innerHTML = obj[i];
                divTag.className+="nodeclass";
                document.getElementById("content").appendChild(divTag);
            }
        }
    }
    xmlhttp.open("GET","verify.php",true);
    xmlhttp.send();
}
window.onload=function() {
    newfunction();
    setInterval("newfunction()",5000);
}

したがって、ページの読み込み時にコンテンツを取得し、5秒ごとに追加する必要があります。

ありがとう。

4

2 に答える 2

1

setTimeoutまたはsetIntervalが表示されませんが、次のようにします。

function processIt(obj, i) {
    var n = obj.length;
    if (i < n) {
        var divTag = document.createElement("div");
        divTag.id = "div" + i;
        divTag.innerHTML = obj[i];
        divTag.className+="nodeclass";
        document.getElementById("content").appendChild(divTag);
        setTimeout(function () {
            processIt(obj, ++i);
        }, 1000);
    }
}

var obj = document.getElementsByTagName("div"); // Or whatever "obj" is

processIt(obj, 0);
于 2012-08-22T17:56:40.953 に答える
0

スニペットを更新したので、私の答えを更新しました。verify.phpのJSONオブジェクトはどのように見えますか?それはオブジェクトですか、配列ですか、それとも単純な文字列ですか?

function retrieveContent() {
    var arrayOfElements,
        xmlhttp;

    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            arrayOfElements = JSON.parse(xmlhttp.responseText);
            insertElements(arrayOfElements);

            setTimeout(retrieveContent, 5 * 1000);
        }
    };

    xmlhttp.open("GET","verify.php",true);
    xmlhttp.send();
}

function insertElements(arrayOfElements) {
  var divTag,
      i,
      n;

  for (i = 0, n = arrayOfElements.length; i < n; i++) {
    divTag = document.createElement("div");
    divTag.id = "div" + i;
    divTag.innerHTML = obj[i];
    divTag.className+="nodeclass";
    document.getElementById("content").appendChild(divTag);
  }
}

window.onload=retrieveContent;

jsbinスニペット

于 2012-08-22T17:58:33.447 に答える