#javascript
#javascript
Вопрос:
Я пытаюсь больше изучить JavaScript, работая над проектами, которые меня интересуют, поэтому простите меня, если это очень простой вопрос.
Я пытаюсь создать инструмент, который обнаруживает строку слов (предпочтительно текстовый или JSON-файл) со страницы HTML (в div).
<html>
<title>Hello world</title>
<head>
</head>
<body>
<div class="print" id="print"></div>
<textarea class="textarea" class="answerBox" id="answerBox"></textarea>
<script>
var inputBox = document.getElementById('answerBox');
inputBox.onkeyup = function(){
document.getElementById('print').innerHTML = inputBox.value;
}
</script>
</body>
</html>
Вот что я сделал до сих пор: https://jsfiddle.net/mc3kqj4t / По сути, это все еще ничего, но то, что я хочу сделать, это ввести что-то в поле, затем, как только я набираю текст, он мгновенно появляется на странице, но также, пока это происходит, я могу видеть, есть ли какие-либо слова, которые я ввелсодержат определенные ключевые слова, соответствующие регулярному выражению (например, «fox» и его перестановки «f ox» или что-то в этом роде). Мне нужно ссылаться на внешний файл, потому что слова нужно время от времени обновлять.
Кто-нибудь может помочь?
Ответ №1:
Мысли:
- Вы можете сохранить входной текст в переменной, а регулярное выражение — в другой. (не уверен, что в вашем случае необходимы оба варианта)
- Используйте JavaScript replace для замены совпадений регулярных выражений выделенным HTML-кодом.
Пожалуйста, ознакомьтесь с этой демонстрацией на основе вашего кода.
<html>
<title>Vulgarism Sandbox</title>
<head>
</head>
<body>
<p>Try input in the textarea with some text containing `aw `</p>
<div class="print" id="print"></div>
<textarea class="textarea" class="answerBox" id="answerBox" value="abcde"></textarea>
<input value="aw " id="regexInput" />
<script>
var inputBox = document.getElementById('answerBox');
inputBox.onkeyup = function() {
const regexInput = new RegExp(document.getElementById('regexInput').value, 'ig');
const text = document.getElementById('answerBox').value;
// replace regex matches in input text, and add 'highlight' HTML
const renderText = text.replace(regexInput, match => `<b>${match}</b>`)
document.getElementById('print').innerHTML = renderText;
}
</script>
</body>
</html>
Комментарии:
1. Спасибо. Это каким-то образом применимо к тому, что я хочу сделать, но я также хочу иметь динамический список слов, которые я могу просто заменить, когда они, вероятно, хранятся в текстовом файле или файле json, чтобы я мог изменять слова, когда захочу. Также кажется, что это не позволяет вам добавлять более одного слова? но это очень хорошее начало, спасибо вам!