如何在javascript中将文本区域拆分为多个部分

how to split the textarea into parts in javascript

本文关键字:拆分 个部 区域 文本 javascript      更新时间:2023-09-26

我正在尝试打开用户在textarea中输入的5个URL但是数组并没有单独获取url,而是将它们全部获取:

function loadUrls() 
{
    var myurl=new Array();
    for(var i=0;i<5;i++)
    {
        myurl[i] = document.getElementById("urls").value.split(''n');
        window.open(myurl[i]);
    }
}

您只需要将文本内容拆分一次。然后对该数组中的每个项进行迭代。我想你想要的是:

function loadUrls() {
    var myurls = document.getElementById("urls").value.split(''n');
    for(var i=0; i<myurls.length; i++) {
         window.open(myurls[i]);
    }
}

下面是一个工作示例:

var input = document.getElementById('urls');
var button = document.getElementById('open');
button.addEventListener('click', function() {
  var urls = input.value.split(''n');
  urls.forEach(function(url){
    window.open(url);
  });
});
<button id="open">Open URLs</button>
<textarea id="urls"></textarea>

请注意,现在的浏览器会采取额外的步骤来阻止弹出窗口。查看开发人员控制台中的错误。

我看到了一些问题。

  1. 您正在声明一个新的Array,然后通过迭代5次来添加值。如果他们投入了5个以上会发生什么?还是更少
  2. split返回已拆分项目的列表。因此,如果您有一个String:这是一个测试,并用空格将其拆分,它将返回:[this,is,a,test]。您不需要拆分项目并手动将其添加到新列表中

我建议做一些类似的事情:

var myUrls = document.getElementById("urls").value.split(''n');
for (var i = 0; i < myUrls.length; i++) {
     window.open(myUrls[i]);
}

然而,正如其他人所建议的那样,为什么不使用多个inputs而不是一个文本区域呢?使用它会更容易,而且可能更方便用户。

基本上:

document.getElementById("urls").value.split(''n');

返回一个数组,其中包含文本区域中的每一行。要获得第一行,您必须在拆分函数后声明[0],因为它将返回Array中的第一个项,因为split将在textarea中的每一行返回一个Array

document.getElementById("urls").value.split(''n')[0];

您的功能可以简化为:

function loadUrls(){
    var MyURL = document.getElementById("urls").value.split(''n');//The lines
    for(var i=0, Length = MyURL.length; Length > i; i++)
        //Loop from 0 to length of URLs
        window.open(
            MyURL[i]//Open URL in array by current loop position (i)
        )
}

示例:

line_1...
line_2...

收件人:

["line_1","line_2"]