#javascript #function #variables #if-statement
#javascript #функция #переменные #if-оператор
Вопрос:
Итак, я ввел текстовое поле, которое должно принимать команды от пользователя, что-то вроде виртуального помощника. Когда пользователь вводит «Меня зовут (вставьте здесь имя)» Я хочу, чтобы переменная userName получала то, что написано после «Меня зовут …» Я искал решения в Интернете, но бесполезно… Он продолжает предупреждать меня «idk».
var userName = "";
var userResponse = document.getElementById("virtual_assistant_body_form_input");
var userResponseField = document.getElementById("virtual_assistant_body_form_input_text_message_field").value; // Selects the field element from the form element.
userResponse.onsubmit = function() {
if (userResponseField.includes('My name is') === true) {
var userName = userResponseField.substr(9, 999);
alert(userName);
}
else {
alert("idk");
}
};
Комментарии:
1. Вам нужно получить
value
ПОСЛЕ отправки. Удалить.value
изuserResponseField
и внутриonsubmit
, использоватьuserResponseField.value.includes
иuserResponseField.value.substr
2. Это было так просто !? Большое вам спасибо! Есть ли какой-нибудь способ отблагодарить вас, подняв репутацию или что-то в этом роде?
3. Вы можете либо удалить его, поскольку это была небольшая ошибка, и это вряд ли поможет будущим читателям. Или, если вы считаете, что это полезно, вы можете принять один из ответов 🙂
Ответ №1:
Я предполагаю, что вы сначала читаете пустое поле формы и сохраняете его значение вместо того, чтобы получать текущее значение при отправке. Так что двигайте его вот так:
var userName = "";
var userResponse = document.getElementById("virtual_assistant_body_form_input");
userResponse.onsubmit = function() {
var userResponseField = document.getElementById("virtual_assistant_body_form_input_text_message_field").value; // Selects the field element from the form element.
if (userResponseField.includes('My name is') === true) {
var userName = userResponseField.substr(9, 999);
alert(userName);
}
else {
alert("idk");
}
};
Ответ №2:
Основная причина заключается в том, что вы получаете входное значение перед отправкой, поэтому значение, хранящееся в переменной tour userResponseField
, не является актуальным, оно не содержит имени.
Приведенный ниже код можно улучшить, но я в автобусе, дайте мне знать, если это решит вашу проблему.
let userName = '';
const inputText = 'My name is ';
const userResponse = document.getElementById('virtual_assistant_body_form_input');
function getUserResponseField() {
return document.getElementById('virtual_assistant_body_form_input_text_message_field').value;;
}
userResponse.onsubmit = function() {
const responseField = getUserResponseField(); // Grabbing the name at this stage, not before
if (responseField.includes(inputText)) {
userName = responseField.replace(inputText, '');
alert(userName);
}
else {
alert('idk');
}
};