3

キャッシュされたテキスト ファイルから取得し、ツイートをループして、Twitter フィードを表示しようとしています。これらのつぶやきをリストに変換しようとするまでは問題なく動作します。li 要素は innerHTML に適切に追加されますが、開始の ul は自動的に閉じ、終了の ul は消えます。

function twitterStatusCallback(obj) {
   if(obj && obj.length){
       document.getElementById('twitter_status').innerHTML += "<ul>";
       var len = obj.length;

      for(var i = 0; i < len; i++){
    //Only get tweets less than 7 days old.
    if ((relativeTimeNumeric(obj[i].created_at)) < (8*24*60*60)) { 

    var tweet = obj[i];

        document.getElementById('twitter_status').innerHTML += "<li>" + linkify(tweet.text);
        document.getElementById('twitter_status').innerHTML += relativeTime(tweet.created_at) +"</li>";

   }
   }
  document.getElementById('twitter_status').innerHTML += "</ul>"; 
}
 }
4

3 に答える 3

5

文字列を構築し、それが完全に構築されたときにそれを innerHTML に割り当てるのはどうですか (したがって、壊れた html を挿入することはありません)。ブラウザーは壊れた DOM ツリーを保存できないため、壊れた html をブラウザーに少しずつ起動すると問題が発生します。

于 2012-04-12T00:09:48.627 に答える
1

もっときれいな

​var ul=document.createElement('ul');
for(i=0;i<len;i++)
{
    var li=document.createElement('li');
    li.innerHTML=linkify(tweet.text)+" "+relativeTime(tweet.created_at);
    ul.appendChild(li);
}

document.getElementById('twitter_status').appendChild(ul);

ここに例があります。

于 2012-04-12T00:29:53.167 に答える
1

これはおそらくブラウザ固有の問題です。最初に innerHTML の文字列を作成し、それを関数の最後に割り当てることをお勧めします。

すなわち:

var temp = "<ul>";
temp += "<li">;

etc...

document.getElement.innerHTML = temp;
于 2012-04-12T00:10:36.140 に答える