Некоторые баллы:
Изменение вашего значения regExp с /^\s+/
на /^\s+|\s+$/g
может быть полезно, так как оно также урежет конечные пробелы.
Измените if (text_input === "") {
на if (removeSpaces === "") {
, иначе вы получите ужасные результаты, если просто ввести пробел.
Почему вы объявляете функции highlight
, removeSpan
и addSpan
, когда вы вызываете их только в одном месте? Просто поместите их код там, где вы их называете (если, конечно, вы не хотите использовать их и в других местах).
Почему вы создаете временные переменные newstr
и newstr2
? Просто переназначьте результат anchor_text.replace()
обратного вызова на anchor_text
.
Передайте регулярные выражения в функции замены вместо строк.
Внедрив все эти изменения, мы получим:
document.getElementById('check-list').onclick = function() {
text_input = document.search.search_list.value.replace(/^\s+|\s+$/g, "");
if (text_input.length) {
var anchor = document.getElementById('results').getElementsByTagName('a');
var alength = anchor.length;
for (var x = 0; x < alength; x++) {
var anchor_text = anchor[x].innerHTML;
anchor_text = anchor_text
.replace(/<span class="highlight">/gi, "")
.replace(/<\/span>/gi, "");
anchor[x].innerHTML = anchor_text;
var re = new RegExp(text_input, "gi");
if (anchor_text.search(re) !== -1) {
anchor_text = anchor_text.replace(re, "<span class='highlight'>$&</span>");
anchor[x].innerHTML = anchor_text;
}
}
}
}