2012-04-12 51 views
3

我試圖通過從緩存的文本文件中拉出並循環播放推文來顯示Twitter提要。正常工作,直到我嘗試將這些推文轉換爲列表。李元素適當地附加到innerHTML,但是開放ul自我關閉,並且結尾ul消失。innerHTML導致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>"; 
} 
} 

回答

5

如何建立一個字符串,然後將其分配給innerHTML的,當它完全建(所以你永遠不注入損壞的HTML)。由於瀏覽器無法存儲破損的dom樹,所以一點一滴地將損壞的html燒成瀏覽器必然會造成問題。

1

這可能是一個瀏覽器特定的問題。我建議首先爲innerHTML構建一個字符串,然後在函數結束時分配它。

即:

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

etc... 

document.getElement.innerHTML = temp; 
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); 

一個例子here