javascript - 将文本文件解析为数组?

标签 javascript html arrays file-io local

我目前有 3 个文件;它们在我计算机上的同一目录中:

  • project.html
  • javascript.js
  • 文本.txt

“project.html”中的代码

<html>
<head>
    <link href="style.css" rel="stylesheet" type="text/css">
    <script type="text/javascript" src="javascript.js">
    </script>
    <script
        //calling the Google Maps API
    </script>

    <script>
        //code to initialize Google Maps
    </script>
</head>

<body>
    <div class="content">
        <div id="googleMap"></div>
        <div id="right_pane_results">hi</div>
        <div id="bottom_pane_options">
            <button onclick="get_parameters()">Try It</button>
        </div>
    </div>
</body>
</html>

“javascript.js”中的代码

function get_parameters() {
    alert('hi');
    var xhr = new XMLHttpRequest();

    xhr.addEventListener('readystatechange', (output) => {
      if (xhr.readyState === 4) {
        var response = xhr.responseText;
        callback(response);
      }
    });

    xhr.open('GET', 'text.txt', true);
    xhr.send();
}

“text.txt”中的文本

  • 钢铁

等...(接近 150 行)

最后,我想将“text.txt”解析为一个数组,并使用该数组创建一个包含该数组内容的选项菜单。我已经发布了一个问题,询问我是否可以使用 JavaScript 解析文件,但由于安全问题,答案是否定的。 JavaScript 代码是我尝试过但没有奏效的代码。也就是说,我可以使用另一种语言来读取文件和创建选项菜单吗?

我最终希望在“project.html”文件中包含如下内容:

<select>
    <option value="1">Line 1 of File</option>
    <option value="2">Line 2 of File</option>
    <option value="3">Line 3 of File</option>
        <!-- etc... -->
</select>

注意事项:

  • 所有文件都在服务器上,而是从我的计算机上运行(所以我猜像PHP这样的服务器大小的语言不是一个选项)
  • 我想根据“text.txt”中的内容自动创建一个选项菜单
  • 文件在同一个目录下
  • 我不希望用户能够选择要阅读的文件。 'text.txt' 是一个文件,由我制作的另一个程序制作并填充,并且可能会更改;这就是为什么我想在每次加载页面时读取文件。

最佳答案

如果您可以调整浏览器设置,那么您没有理由不能只使用 javascript 来做到这一点。下面是一个使用 jQuery 的示例,您可以将其转换为纯 Javascript,但这需要更多代码。

$(document).ready(function() {
    //fetch text file
    $.get('text.txt', function(data) {
        //split on new lines
        var lines = data.split('\n');
        //create select
        var dropdown = $('<select>');
        //iterate over lines of file and create a option element
        for(var i=0;i<lines.length;i++) {
            //create option
            var el = $('<option value="'+i+'">'+lines[i]+'</option>');
            //append option to select
            $(dropdown).append(el);
        }
        //append select to page
        $('body').append(dropdown);
    });
});

它在 IE10 上运行良好,只是一个对话框询问我是否要运行被阻止的内容。其他浏览器可能需要也可能不需要其他安全设置才能正常工作。

关于javascript - 将文本文件解析为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21080605/

相关文章:

javascript - 如何将 JQuery 事件目标转换为包装集?

javascript - bootstrap 多选复选框表现得像单选按钮

javascript - 为什么我必须制作一个单独的变量来纠正这个循环? (JavaScript 基础知识)

javascript - IE 11 调用 lockOrientation 时调用对象无效

javascript - 在 node.js 中使用命名参数

javascript - d3.tree => 转换似乎不起作用

javascript - GetBoundingClientRect 但相对于整个文档

html - CSS 调整图像大小

java - 我想知道如何从数组中删除某些元素

arrays - 如何在 matplotlib 中绘制 2D 强度图?