JavaScript добавляется в конец каждой строки текстового файла

Я читаю содержимое этого текстового файла с 3 строками:

"Первый выбор был:

Второй выбор был:

Третий вариант был: "

Я разделяю на «\ n» и хочу добавить число в конце каждой строки, вводимой пользователем. Пользователь вводит 3 разных числа (из select tags), называемых «ранг1», «ранг2», «ранг3», и я хочу, чтобы каждое число было в конце каждой строки вновь созданного текстового файла.

JavaScript:

var data = fs.readFileSync("data1.txt", "utf-8"); 
var lines = data.split("\n");

lines.forEach(function(line){
var newLine = line + /*What should be appended (rank1,rank2,rank3)*/;
var output = fs.appendFileSync('file', newLine, 'utf8');
})

Теги выбора:

<select name = "rank1" size = "1">
                  <option value = "1">1</option>
                  <option value = "2">2</option>
                  <option value = "3">3</option>

</select>

<select name = "rank2" size = "1">
                  <option value = "1">1</option>
                  <option value = "2">2</option>
                  <option value = "3">3</option>

</select>

<select name = "rank3" size = "1">
                  <option value = "1">1</option>
                  <option value = "2">2</option>
                  <option value = "3">3</option>
</select>

Ожидаемый результат:

"Первый выбор был: 1 Второй выбор был: 3 Третий вариант: 2 "

Как я могу это реализовать? Заранее большое спасибо!

Прочтите руководство по Node.js. Вряд ли это уместный вопрос.

Aluan Haddad 11.04.2018 16:40

Как получить выбранные значения в коде JavaScript?

31piy 11.04.2018 16:43

@ 31piy HTML-файл и файл JavaScript связаны. Затем у меня есть кнопка отправки, которая читает и записывает новый файл. Спасибо!

Gabriela Boyadjiyska 11.04.2018 16:46

Просто идея, но создайте 3 переменные в javascript для rank1,2,3. Сделайте onchange для выбранных элементов и в onchange добавьте значения выбранных значений к переменным. Затем вы можете добавить их, где хотите, когда захотите.

mrdeadsven 11.04.2018 17:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
1 371
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

document.getElementsByName('rank1')[0].value
document.getElementsByName('rank2')[0].value
document.getElementsByName('rank3')[0].value

Не используйте метод, который возвращает коллекцию, а затем выбирает первый элемент в коллекции, просто используйте querySelector, если вы выбираете один элемент.

CertainPerformance 11.04.2018 17:35

Я думаю, вместо этого вы можете использовать цикл for, чтобы перебирать строки и элементы select, а затем экспортировать вывод в файл.

var data = fs.readFileSync("data1.txt", "utf-8"); 
var lines = data.split("\n");
var output;  
for(var i =0; i < lines.length;i++){
  var newLine = lines[i] + document.getElementsByName('rank'+(i+1))[0].value;
     output += newline; 
}

 fs.appendFileSync('file', output, 'utf8');
Ответ принят как подходящий

Есть однострочный вариант того, что вы хотите сделать:

file.split('\n').map( (line) => line + choices.shift() ).join('\n')

Также все это можно делать асинхронно:

const fs = require('fs');
const choices = [ "rank1", "rank2", "rank3" ];

fs.readFile(
    './data1.txt',
    'utf-8',
    (err, file) => fs.writeFile(
        './data1.txt',
        file.split('\n').map( (line) => line + choices.shift() ).join('\n'),
        (err) => {}
    )
);

Другие вопросы по теме