Я работаю над функцией выделения для JavaScript. Идея функции состоит в том, чтобы иметь возможность выделить определенный c раздел строки. Примером строк, с которыми я имею дело, может быть что-то вроде «AAEE134RTYGF631HJ», но только часть, такая как «EE» или «RTYGF», может потребоваться для сопоставления.
У меня есть функция подсветки, которая работает, и я могу выбрать, где начинается подсветка, но я не могу контролировать, где она заканчивается в строке. Он просто выделит всю строку после начальной точки. У меня вопрос, есть ли способ с кодом, который я должен сделать, чтобы то, что я хочу, чтобы на самом деле произошло? Или мне нужен новый подход?
<!DOCTYPE html>
<html>
<head>
<style>
.highlight {
background-color: yellow;
}
</style>
</head>
<body>
<!-- <button onclick="highlight('e')">Highlight</button> -->
<label for="textbox0">Word One</label><br>
<input type="text" id="textbox0" name="textbox0"><br>
<button type="button" onclick="getInput0(textbox0,this)">Check</button><br><br>
<p id="entry0"></p><br>
<script>
// Highlights any code in a given line.
function highlight(text,id,begin,end) {
var inputText = document.getElementById(id);
var innerHTML = inputText.innerHTML;
var index = innerHTML.indexOf(text)+begin;
if (index >= 0) {
innerHTML = innerHTML.substring(0,index) + "<span class='highlight'>" + innerHTML.substring(index,index+text.length) + "</span>" + innerHTML.substring(index + text.length);
inputText.innerHTML = innerHTML;
return string;
}
}
function verify(string,num,maxLen){
var begin=1;
var end=5;
var id="entry"+num;
// parameters to test for go here.
var len=string.length;
if(len>maxLen)
{
document.getElementById(id).innerHTML = string;
highlight(string,id,begin,end);
}
else
{
document.getElementById(id).innerHTML = string;
}
}
function getInput0(button,el){
var button = document.getElementsByTagName("INPUT")[0].getAttribute("name");
var string = document.getElementById(button).value;
var num=0
var maxLen=5
verify(string,num,maxLen)
}
</script>
</body>
</html>
Я все еще новичок в Javascript, поэтому я не уверен, что будет считаться "наилучшей практикой", и я прошу прощения, если это чрезвычайно очевидно.