如何在 JavaScript 中获取 var 的一部分?

声波

在我的函数中,我有以下变量(它的内容是一个 html 代码):

<!DOCTYPE html>
 <html class="no-js" lang="en">
 <head>
  <meta charset="utf-8">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="assets/css/app.css"></link>
  <title>App Android</title>
 </head>
 <form action="#" class="formulario" name="formulario">
 <style>
     .campo-texto {
         color: #7B7D7D;
         height: 30px;
         position: absolute;
         padding: 0px 5px 0px 5px;
         border-style: ridge;
         resize: horizontal;
         overflow-x: hidden;
         overflow-y: hidden;
         background-color: white;
         text-align: left;
         border-radius: 6px;
     }
     .campo-botao {
         position: absolute;
         height: 28px;
         width: 80px;
         border: 2px solid rgba(0, 0, 0, 0.3);
         text-align: center;
         border-radius: 6px;
         box-shadow: 2px 2px 2px #888;
         overflow: hidden;
     }
     .campo-prompt {
         position: absolute;
         min-height: 20px;
         display: inline-block;
         padding: 0px 5px 0px 5px;
         border: 1px dotted black;
         border-radius: 6px;
     }
     .a9-screen-dimension {
         position: relative;
         margin: 0px;
         width: 340px;
         height: 540px;
         border: 1px solid black;
         background-color: #CED7E5;
         overflow: hidden;
         }
 </style>
 <body>
 <div id="myScreen" class="a9-screen-dimension" tabindex="0">     
   <div id="promptId0" class="campo-prompt" draggable="true" style="top:68.625px; left:65.84375px;" tabindex="0">Prompt</div><button id="botaoId1" class="campo-botao" draggable="true" style="top:235.625px; left:77.84375px;" tabindex="0" myselection="salvar">Salvar</div></div>
 </div>
 </form>
 <script>
  function send(toast) {
   var cod = formulario.cod.value;
   Android.sendDataToAndroid(cod);
  }
 </script>
 </body>
</html>

现在,我只需要获得以下部分:

<div id="myScreen" class="a9-screen-dimension" tabindex="0">
 <div id="promptId0" class="campo-prompt" draggable="true"  style="top:68.625px; left:65.84375px;" tabindex="0">Prompt</div><button id="botaoId1" class="campo-botao" draggable="true" style="top:235.625px;left:77.84375px;" tabindex="0" myselection="salvar">Salvar</div>
 </div>
</div>

我已经尝试了以下方法,但所有这些都给了我错误:“......不是函数......”。

reader = reader.substr(reader.indexOf('<div id=\"myScreen\"'), reader.length() - 132);
reader = reader.substr(reader.indexOf('<div id=\"myScreen\"'), reader.indexOf('</form>'));

div myScreen 里面的内容是动态生成的,所以它可能比示例更大或更小。

我正在从 .html 文件中读取此内容。

这是我的功能:

$("#openProject").on("click", function openProject()

{
    $("#inputAbrir").trigger('click');
    inputAbrir.addEventListener('change', function(e) {
    var file = inputAbrir.files[0];

    if (file.name.match(/\.(html)$/)) {
        var reader = new FileReader();

        reader.onload = function() {

            console.log(reader.result);

        };
        reader.readAsText(file);    
    } 
    else {
        alert("Just .HTML files are supported!");
    }
   });
});

也许我错了,但我认为,既然我已经有了 var 的内容,我只需要找到一种方法来获取它的一部分内容,对吗?只是我还没弄明白...

提前致谢!

托马斯·扎托 - 恢复莫妮卡

最好的办法是将其解析为 HTML,然后就可以使用 DOM 方法来读取和操作它:

// mock reader
const reader = {};
reader.result = getHTML();

const parser = new DOMParser();
const domobj = parser.parseFromString(reader.result, "text/html");
const myScreenHTML = domobj.querySelector("#myScreen").outerHTML;
console.log(myScreenHTML);

    const expression = /(<div id="myScreen"[\s\S]*?<\/div>\s*<\/form>)/im;
    console.log(expression.exec(reader.result)[1]);

function getHTML() {
    return `<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="assets/css/app.css"></link>
<title>App Android</title>
</head>
<form action="#" class="formulario" name="formulario">
<style>
     .campo-texto {
         color: #7B7D7D;
         height: 30px;
         position: absolute;
         padding: 0px 5px 0px 5px;
         border-style: ridge;
         resize: horizontal;
         overflow-x: hidden;
         overflow-y: hidden;
         background-color: white;
         text-align: left;
         border-radius: 6px;
     }
     .campo-botao {
         position: absolute;
         height: 28px;
         width: 80px;
         border: 2px solid rgba(0, 0, 0, 0.3);
         text-align: center;
         border-radius: 6px;
         box-shadow: 2px 2px 2px #888;
         overflow: hidden;
     }
     .campo-prompt {
         position: absolute;
         min-height: 20px;
         display: inline-block;
         padding: 0px 5px 0px 5px;
         border: 1px dotted black;
         border-radius: 6px;
     }
     .a9-screen-dimension {
         position: relative;
         margin: 0px;
         width: 340px;
         height: 540px;
         border: 1px solid black;
         background-color: #CED7E5;
         overflow: hidden;
         }
</style>
<body>
<div id="myScreen" class="a9-screen-dimension" tabindex="0">     
   <div id="promptId0" class="campo-prompt" draggable="true" style="top:68.625px; left:65.84375px;" tabindex="0">Prompt</div><button id="botaoId1" class="campo-botao" draggable="true" style="top:235.625px; left:77.84375px;" tabindex="0" myselection="salvar">Salvar</div></div>
</div>
</form>
<${"script"}>
function send(toast) {
  var cod = formulario.cod.value;
  Android.sendDataToAndroid(cod);
}
</${"script"}>
</body>
</html>`;
}

不建议:

您也可以使用正则表达式。既然你坚持了,下面是方法:

const expression = /(<div id="myScreen"[\s\S]*?<\/div>\s*<\/form>)/im;
console.log(expression.exec(reader.result)[1]);

这是正则表达式的小提琴:https : //regex101.com/r/jwyCPh/1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在JavaScript中获取字符串的最后一部分?

如何使用 javascript 从 url 中获取最后一部分?

如何在JavaScript中的“:”之前删除字符串的一部分?

如何在JavaScript中打印呈现的HTML页面的一部分?

如何在javascript中更改json obj的一部分?

如何在JavaScript中删除字符串的最后一部分?

如何在javascript中替换字符串的一部分

如何在 JavaScript 中识别 localStorage 键的一部分?

如何在javascript中仅旋转画布的一部分?

如何使用 Javascript 获取 URL 字符串的一部分?

如何仅获取JavaScript文件的一部分?

如何将 javascript 对象的一部分存储到变量中?

如何在javascript中的特定字符串之后更改句子的一部分

JavaScript 获取页面 URL 的一部分

使用JavaScript获取URL的一部分

如何获取 URL 的一部分?

如何删除获取ID的一部分

如何获取当前的一部分URL?

PHP中的Regex:如何在最后一部分URL中获取单词?

JavaScript:如何将颜色更改为仅输入字段中字符串的一部分?

如何仅匹配Javascript中的字符串的一部分或包含的字符串

如何在Nginx中获取$ host变量的一部分?

如何在OCaml / ReasonML中获取列表的一部分?

如何在jQuery中获取文本框ID的一部分

如何在opencv中获取矩阵的一部分

如何在BigQuery Standard SQL中获取数组的一部分?

如何在返回值中获取列表的一部分

如何在Ant设计中获取当前URL的最后一部分

如何在Haskell中获取数字的一部分