Получить текст из нескольких текстовых областей с одинаковым идентификатором в массив и преобразовать в строку в jQuery - PullRequest
1 голос
/ 01 августа 2020

Я ищу способ вставить весь текст из текстовых полей в массив, а затем преобразовать его в строку. Я пробовал этот код:

(function () {
var array = [];
$('textarea').each(function () {
array.push(this.value);
});
});
string = array.toString()

, но он возвращает [object Window]. Кто-нибудь знает, как это исправить?

Ответы [ 2 ]

2 голосов
/ 01 августа 2020

По сути, вы просто закрыли (function(){}); слишком рано. Поскольку вы определили переменную array внутри функции, она недоступна снаружи. Чтобы исправить это, вы могли только закрыть (function(){}) несколькими строками ниже. Не забудьте также запустить функцию! См. Комментарии.

(function () {
    var array = [];
    
    $('textarea').each(function () {
        array.push(this.value);
    });

    var string = array.toString(); // add "var" in front of a new variable name
    console.log(string);

})(); // move this closing paranthesis further down and add () 
      // then it is an IIFE and will run
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<textarea>111</textarea>
<textarea>222</textarea>
<textarea>333</textarea>

Вы также можете сделать что-то вроде этого (без jQuery и зачем использовать массив, если вам нужна строка)

var result = '';
[...document.querySelectorAll('textarea')].forEach(function(element){
    result = result + element.innerHTML;
});

console.log(result);
<textarea>111</textarea>
<textarea>222</textarea>
<textarea>333</textarea>

или если вы хотите преобразовать pu sh в массив обратно в строку, вы можете использовать .join () (jQuery не нужен)

var result = [];
[...document.querySelectorAll('textarea')].forEach(function(element){
    result.push(element.innerHTML);
});

console.log(result.join());
<textarea>111</textarea>
<textarea>222</textarea>
<textarea>333</textarea>
1 голос
/ 01 августа 2020

Если вам нужна функция для применения, вы можете сделать это без jQuery:

function getTextAreasString() {
    var textArray = []
    Array.from(document.getElementsByTagName("textarea")).forEach(
        textarea => textArray.push(textarea.textContent)
    )
    return textArray;
}

Идея состоит в том, чтобы получить все textarea элементы, добавить их в массив и вернуть этот массив со всеми textContent тегов, которые вы обработали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...