Я читаю содержимое этого текстового файла с 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 "
Как я могу это реализовать? Заранее большое спасибо!
Как получить выбранные значения в коде JavaScript?
@ 31piy HTML-файл и файл JavaScript связаны. Затем у меня есть кнопка отправки, которая читает и записывает новый файл. Спасибо!
Просто идея, но создайте 3 переменные в javascript для rank1,2,3. Сделайте onchange для выбранных элементов и в onchange добавьте значения выбранных значений к переменным. Затем вы можете добавить их, где хотите, когда захотите.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


document.getElementsByName('rank1')[0].value
document.getElementsByName('rank2')[0].value
document.getElementsByName('rank3')[0].value
Не используйте метод, который возвращает коллекцию, а затем выбирает первый элемент в коллекции, просто используйте querySelector, если вы выбираете один элемент.
Я думаю, вместо этого вы можете использовать цикл 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) => {}
)
);
Прочтите руководство по Node.js. Вряд ли это уместный вопрос.