2015-12-02 52 views
0

我有一段粗略的代碼,我從另一個網站借來的代碼,在一個方面給了我很好的幫助,但現在我遇到了一些麻煩。如何將div內的內容轉換爲一系列變量?

我有一個可以用一系列變量保存的文件...變量X爲17,變量Y爲5.您點擊保存按鈕,然後下載一個txt文件,內容爲「17 05」 。那部分我肯定有下降,不需要幫助。

但是,一旦我將這個文件與其中的「17 05」一起上傳,我將它上傳到HTML並將其內容轉換爲DIV。繁榮,「17 05」正好在我的HTML中,酷似地獄。除了......我如何得到這個全新的HTML來將「17」和「05」排列爲變量X和Y,就像它在上述HTML中一樣?

function readBlob(opt_startByte, opt_stopByte) { 

var files = document.getElementById('files').files; 
if (!files.length) { 
    alert('Please select a file!'); 
    return; 
} 

var file = files[0]; 
var start = parseInt(opt_startByte) || 0; 
var stop = parseInt(opt_stopByte) || file.size - 1; 
var reader = new FileReader(); 

// If we use onloadend, we need to check the readyState. 
reader.onloadend = function(evt) { 
    if (evt.target.readyState == FileReader.DONE) { // DONE == 2 
     document.getElementById('byte_content').textContent = evt.target.result; 
    } 
}; 

var blob = file.slice(start, stop + 1); 
reader.readAsBinaryString(blob); 
} 

document.querySelector('.readBytesButtons').addEventListener('click', function(evt) { 
    if (evt.target.tagName.toLowerCase() == 'button') { 
     var startByte = evt.target.getAttribute('datastart'); 
     var endByte = evt.target.getAttribute('dataend'); 
     var strxs = evt.target.getAttribute('ds-str'); 
     var strxe = evt.target.getAttribute('de-str'); 
     $('#flodump-str #start').text(strxs); 
     $('#flodump-str #end').text(strxe); 
     var readStr = $('#flodump-str').text(); 
     $('#devtestdump span').text(readStr); 
     readBlob(startByte, endByte); 
    } 
}, false); 

有了這個當前代碼,我勉強理解,它需要的字節數從HTML和從一定量的(startByte)到另一個量(endByte)讀出它並且它轉儲在同一個位置。

我的問題,因爲我試圖做的是...好吧,讓它傾倒在多個地方!如果我能夠將「17」和「05」分成不同的跨度,這就是孩子們玩弄它們作爲變量。然而,它們都在一個div中,沒有任何區分跨度或id標籤,它只有一個DIV,其數量爲沙拉作爲其內容......除非有某種方法使用相同的字符數/字節數方法進入DIV,並且說「前兩個字符是變量X,接下來的兩個字符是變量Y.」

要麼,或者有辦法讓整個readBlob業務對每個指定的字節區域都有多個輸出?

任何人都可以幫助我嗎?任何幫助是極大的讚賞。

編輯:我應該注意到,我留下了一些我半心半意的嘗試,在代碼中自己解決問題。我試圖將指定的字節字段作爲變量導出,只是爲了發現不是輸出內容,而是輸出實際的字節字段,例如用於讀取文本文件中的位置的「35和37」,而不是實際的內容在35和37的位置。編輯2:我還應該注意「17」和「05」僅僅是爲了簡潔的一個例子。我在我的實際文本文件中有大約四十個這樣的兩位數變量。

+0

如果您使用jquery選擇器並點擊函數,它可能會有所幫助 – Binvention

+0

@Binvention嗯,它是一次點擊。文本文件加載後,你點擊按鈕,它顯示在屏幕上(我有),然後將內容轉換爲變量(我需要幫助) –

+0

我知道我說的點擊功能是使用JavaScript文檔選擇器如果你使用jquery .click函數,你將擁有更多可用的jQuery這個對象。 – Binvention

回答

0

如果我只是將「17」和「05」分成不同的跨度,那麼子女 就會將它們作爲變量發揮作用。然而,他們都在一個div, 沒有任何區分跨度或id標籤,其只有一個DIV 號碼沙拉作爲其內容...除非有某種方法使用相同的字符數/字節達到 到DIV編號方法和說 「前兩個字符是變量X,接下來的兩個字符是變量Y的 」。

嘗試限定XY作爲對象的屬性名稱,使用String.prototype.match()RegExp/\d+/g返回的一個或多個數字的字符,隨後數字字符,Object.keys()檢索創建的對象,Array.prototype.forEach()的屬性名稱設置屬性XYdiv中的匹配項。如果預期的結果爲XY爲多個對象,可以投通過.match()返回到利用Number(res[i]),其中res是陣列由.match()返回數字字符串,i是內.forEach()

var obj = {X:void 0, Y:void 0}; 
 
var res = document.querySelector("div").textContent.match(/\d+/g); 
 
Object.keys(obj).forEach(function(val, i) { 
 
    obj[val] = res[i] 
 
}) 
 
console.log(obj)
<div>17 05</div>
迭代在數組項的索引

+0

我不明白你剛纔所說的很多。這段代碼是否將「17」和「05」註冊爲兩個不同的變量,我可以使用var函數操作? –

+0

@ R.Little _「這個代碼是否將」17「和」05「註冊爲我可以操作的兩個不同變量」_本質上,是的;儘管'X','Y'被指定爲通用對象的屬性。訪問'X'或'Y'可以使用'obj.X //「17」'或'obj.Y //「05」'。爲了設置''X',全局'Y'可以調整'obj [val] = res [i]'到'window [val] = res [i]' – guest271314

相關問題