我从另一个网站借来的代码很粗糙,但在某种程度上对我有好处,但现在我遇到了麻烦。
我有一个可以用一系列变量保存的文件...变量X是17,变量Y是5.你点击保存按钮然后下载一个内容为"的txt文件05&#34 ;.那部分我肯定已经拍了下来,不需要帮助。
然而,一旦我将此文件与" 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位置的实际内容。
EDIT2:我还应该注意到" 17"和" 05"这只是一个简洁的例子。在我的实际文本文件中,我有大约四十个这两位数的变量。
答案 0 :(得分:0)
如果我能得到" 17"和" 05"进入不同的跨度,那个孩子 发挥他们作为变量。但是,他们都在一个div中, 没有任何差异化的跨度或id标签,它只有一个DIV 沙拉作为其内容...除非有一些方法可以达到 使用相同的字符数/字节数方法进入DIV并说 "前两个字符是变量X,接下来的两个字符是 变量Y。"
尝试将X
,Y
定义为对象的属性名称,使用String.prototype.match()
与RegExp
/\d+/g
一起返回一个或多个数字字符后跟数字字符Object.keys()
用于检索已创建对象的属性名称,Array.prototype.forEach()
可将属性X
,Y
设置为div
中找到的匹配项。如果预期结果是X
和Y
为数字对象,则可以将.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>
&#13;