javascript - 如何仅使用 javascript 加粗搜索内容?

标签 javascript

我正在尝试使用 javascript 进行自动建议搜索。一切正常,现在我想在列表中将搜索到的文本加粗。

当用户搜索某些内容然后只有搜索文本在结果列表中变为粗体时,这是否可能。例如,如果我搜索 one,那么列表中的 one 将以粗体显示。

var inputId 	= 'filter-search';
var itemsData 	= 'filter-value';
var displaySet = false;
var displayArr = [];

function getDisplayType(element) {
	var elementStyle = element.currentStyle || window.getComputedStyle(element, "");
	return elementStyle.display;
}

document.getElementById(inputId).onkeyup = function() {
	var searchVal = this.value.toLowerCase();
	var filterItems = document.querySelectorAll('[' + itemsData + ']');
	for(var i = 0; i < filterItems.length; i++) {
		if (!displaySet) {
			displayArr.push(getDisplayType(filterItems[i]));
		}
		filterItems[i].style.display = 'none';
		if(filterItems[i].getAttribute('filter-value').toUpperCase().indexOf(searchVal.toUpperCase()) >= 0) {
			filterItems[i].style.display = displayArr[i];		
		}
	}
	displaySet = true;
}
<input type="text" id="filter-search" />

<ul>
	<li filter-value="One Is">One Is (Uppercase)</li>
  <li filter-value="one is">one is (Lowercase)</li>
	<li filter-value="two">Two</li>
	<li filter-value="three">Three</li>
	<li filter-value="four">Four</li>
	<li filter-value="five" >Five</li>
	<li filter-value="six">Six</li>
	<li filter-value="seven">Seven</li>
	<li filter-value="eight">Eight</li>
	<li filter-value="nine">Nine</li>
	<li filter-value="ten" >Ten</li>
</ul>

最佳答案

我已经通过使用下面的代码做到了这一点

var textcontent = filterItems[i].textContent;
    var replacedval = "<strong>"+currval+"</strong>"
    var finalval = textcontent.replace(currval, replacedval);
   filterItems[i].innerHTML = finalval;
        filterItems[i].style.display = 'none';

这里正在运行 JSFiddle
https://jsfiddle.net/ku5zv3dz/

关于javascript - 如何仅使用 javascript 加粗搜索内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40254724/

相关文章:

javascript - window.onload 未在 IE 中触发

javascript - this.props.function 不是一个函数

javascript - SpreadsheetApp.openById 未通过 Google 电子表格

javascript - 如何计算路径上两点之间的距离?

javascript - 如何使用 ng-animate 以与列出元素相同的方式为表格行设置动画?

javascript - 带有 Websockets/socket.io 的 Ember.js。用于加载实时数据的 Ember API 调用/推荐结构

javascript - 更新购物车中的值

javascript - 在现有表中添加新行

javascript - Json - 检查子节点空值

javascript - Bootstrap checkbox 和 radio input with font-awesome