Я пытаюсь сделать простой фильтр «плохих слов» с помощью JavaScript. Он предназначен для прослушивания любых событий отправки на странице, затем итерации по всем полям ввода текстового типа, проверки их на наличие ошибок, сравнения введенного текста со списком слов и, наконец, возврата соответствующего console.log / alert (дляв настоящее время).
У меня есть два файла: word-list.js
с критическими словами (сначала загружается) и filter.js
, который извлекает массив со всеми словами из word-list.js
.
Мои проблемы: swear_words_arr[1]
это 'undefined
' и я не понимаю почему. Я искал решения, но все же не могу определить причину этого. Помощь очень ценится.
// get all inputs type = text and turn html collection into array
var getInputs = document.querySelectorAll("input[type=text]")
var inputs = Array.from(getInputs);
//var swear_alert_arr -> from in word-list.js
var swear_alert_arr = new Array();
var swear_alert_count = 0;
function reset_alert_count() {
swear_alert_count = 0;
}
function validate_text() {
reset_alert_count();
inputs.forEach(function(input) {
var compare_text = input.value;
console.log(compare_text);
for (var i = 0; i < swear_words_arr.length; i++) {
for (var j = 0; j < compare_text.length; i++) {
if (
swear_words_arr[i] ==
compare_text.substring(j, j + swear_words_arr[i].length).toLowerCase()
) {
swear_alert_arr[swear_alert_count] =
compare_text.substring(
j,
j + swear_words_arr[i].length
);
swear_alert_count++;
}
}
}
var alert_text = "";
for (var k = 1; k <= swear_alert_count; k++) {
alert_text += "\n" + "(" + k + ") " + swear_alert_arr[k - 1];
if (swear_alert_count > 0) {
alert("No!");
console.log('omg no bad stuff! D:');
} else {
console.log('no bad stuff found :)');
}
}
});
}
window.onload = reset_alert_count;
window.addEventListener('submit', function() {
validate_text();
});