2014-03-31 40 views
0

我需要你的幫助,解析UL李名單逗號分隔值

因爲它是現在,我的功能吐出我的UL李名單爲以下:

​​

我需要得到它的格式爲:

Coffee,Tea,Milk 

爲什麼會添加多餘的空格?

function items_2_var() { 

    var x = document.getElementById("list1").getElementsByTagName("li") 

    var values = [] 

    for(var i=0;i < x.length; i++) { 

     if (x[i].innerText.length) { values.push(x[i].innerText) } 
    } 

    alert(values.join(",")) 

} 

HTML:

<div id="list1"> 
    <ul> 
     <li>Coffee</li> 
     <li>Tea</li> 
     <li>Milk</li> 
    </ul> 
</div> 
+2

我沒有得到同樣的問題。看到這裏:http://jsfiddle.net/6uTVD/ – Icarus

+0

驗證你確實做了values.join(「,」)而不是values.join(「,」)(?) – Scott

+0

注意'innerText'是非標準的,並且不支持Firefox。我無法在Firefox上使用標準的'textContent'重現問題。 – Oriol

回答

1

我可以重現您所描述的問題的唯一方法是,如果你實際上呈現爲這樣一個HTML結束:

<div id="list1"> 
    <ul> 
     <li>Coffee&nbsp;&nbsp;&nbsp;&nbsp;</li> 
     <li>Tea&nbsp;&nbsp;</li> 
     <li>Milk&nbsp;&nbsp;&nbsp;</li> 
    </ul> 
</div> 

在這種情況下,當你加入字符串時,你會看到空間。然而,這很容易通過修復,而不是以下:values.push((x[i].innerText.replace(/\s/g,''))

代碼:

function items_2_var() { 
    var x = document.getElementById("list1").getElementsByTagName("li"); 
    var values = []; 
    for(var i=0;i < x.length; i++) { 
     if (x[i].innerText.length) { values.push((x[i].innerText.replace(/\s/g,''))); } 
    } 
    alert(values.join(",")); 
} 

Full demo here.