如何将div中的内容转换为一系列变量?

时间:2015-12-02 05:10:46

标签: javascript jquery html html5

我从另一个网站借来的代码很粗糙,但在某种程度上对我有好处,但现在我遇到了麻烦。

我有一个可以用一系列变量保存的文件...变量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"这只是一个简洁的例子。在我的实际文本文件中,我有大约四十个这两位数的变量。

1 个答案:

答案 0 :(得分:0)

  

如果我能得到" 17"和" 05"进入不同的跨度,那个孩子   发挥他们作为变量。但是,他们都在一个div中,   没有任何差异化的跨度或id标签,它只有一个DIV   沙拉作为其内容...除非有一些方法可以达到   使用相同的字符数/字节数方法进入DIV并说   "前两个字符是变量X,接下来的两个字符是   变量Y。"

尝试将XY定义为对象的属性名称,使用String.prototype.match()RegExp /\d+/g一起返回一个或多个数字字符后跟数字字符Object.keys()用于检索已创建对象的属性名称,Array.prototype.forEach()可将属性XY设置为div中找到的匹配项。如果预期结果是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>
&#13;
&#13;
&#13;