2012-05-10 47 views
2

我有一個HTML頁面全用逗號分隔的數據,並在(BR /)標記每行結束。在JavaScript中,我可以通過請求包含數據的元素的innerHTML從DOM中獲得此信息。的JavaScript解析的innerHTML

我的問題是如何解析innerHTML從逗號之間獲取數據,並在它碰到(br /)標籤時從下一行開始?

你也許可以忽略其他的,因爲這是我的上述問題。

當我分析每一行,我將開始一個新的對象,並把數據放到它。我只是不確定如何處理innerHTML!

我並把數據通過CSVtoarray函數我發現,但最終具有一個大陣列的陣列,而不是陣列中的每一行的陣列。我可以通過這個數組創建對象,但是將innerHTML轉換爲單個數組似乎是不必要的一步,因爲我可以直接將數據解析爲對象。

的數據通過AJAX放在那裏。我可以改變數據的格式。正如我所說的,我已經在行尾使用逗號和(br /)標籤分隔數據。我不知道這是不是愚蠢的。

+0

只是得到一個JSON對象從你的服務器。 – josh3736

+0

@ josh3736這是一個非常乾淨的解決方案。感謝您閱讀並看穿我的愚蠢。 –

+0

很高興我可以幫助 - 你應該[點擊支票](http://meta.stackexchange.com/a/5235/148988)在我的回答旁邊,這樣大家都知道你的問題已經解決了。 – josh3736

回答

1

你提到你可以控制你通過AJAX獲得的數據,你說得對,你現在的方法不是最好的主意。首先,你不應該試圖獨自解析HTML,即使你認爲它是「簡單」的–不同的瀏覽器會給你不同的innerHTML完全相同的內容。相反,使用DOM來查找您要查找的信息。

這就是說,這裏的正確的做法是隻從服務器返回一個JSON對象;您將可以直接訪問您的數據。幾乎每種服務器端語言都有某種設備可以輸出JSON,而JavaScript可以本機解析JSON字符串和JSON.parse()

從服務器返回:

{items: [ 
    { id: 0, name: '...' }, 
    { id: 1, name: '...' }, 
    ... 
]} 

在客戶端(假設jQuery的),

$.getJSON('/path-to-script/', function(d) { 
    for (var i = 0; i < d.items.length; i++) { 
     d.items[i].id; 
    } 
}); 

1 - 在現代瀏覽器

+0

天才。感謝這個解決方案。 –

2

所以,你想csv解析一個文件,其中換行標記爲<br />而不是\n?只需在CSV分析器中使用該分隔符即可。簡單的版本:

text.split("<br />".map(function(line){ return line.split(","); }) 

您還可以通過正則表達式拆分,像

text.split(/\s*<br ?\/>\s*/)... 

如果你真的HABE在DOM CSV數據,你可以刪除所有的BR-元素,並使用剩餘的(文本)節點作爲行數組。

1

你可以簡單地這樣做,如果你只是想「從逗號之間獲取數據出來」:

yourElem.innerHTML = yourElem.innerHTML.split(",").join(""); 

或者,如果你只想線組成的數組:

var lines = yourElem.innerHTML.split(","); 

那將會返回一組<br>元素完整的行。不過,目前還不清楚這是不是你想要的。