javascript - 通过 for 循环按部分 id 标签搜索元素
问题描述
所以我有这个 svg 地图,其中的街道都包含 id 标签中的街道名称。我想要一个搜索字段,通过将搜索输入部分与街道的 id 匹配来搜索街道。现在我的代码有一些问题。首先,它搜索时区分大小写,其次,ID 对每个空格都有一个下划线,这些需要在搜索中用空格替换,最后,当我进行肯定搜索时,它会为街道着色,但如果我删除搜索,街道会继续显示突出显示的颜色。
document.onkeydown = function(event){
var searchvalue = document.getElementById("searchfield").value;
document.querySelector("[id*="+searchvalue+"]").style.stroke = "yellow";}
现在我查找了一些解决方案,一个是创建一个 for 循环来检查每个元素是否符合这些条件,但是我的 svg 包含多个标记名,如“line”、“path”和“polygon”,所以我不知道该怎么做。
解决方案
您需要在这里为搜索项目分配类,然后在下次搜索时从所有突出显示的路径中删除样式和该类。对于搜索,首先用空格分割路径,然后将字符串大写并用下划线再次加入,即
function changeFunction(event){
console.log(event);
var searchvalue = event.split(' ').map(element => element.charAt(0).toUpperCase() + element.slice(1).toLowerCase()).join('_');
document.querySelectorAll('.searched').forEach(element => {
element.removeAttribute('style');
element.removeAttribute('class');
});
if(searchvalue) {
document.querySelectorAll("[id*="+searchvalue+"]").forEach(( element) => {
element.style.stroke = "green";
element.setAttribute('class', 'searched');
});
}
}
推荐阅读
- reactjs - 延迟加载的模块共享相同的依赖项?
- node.js - 创建控制器 API 以显示要在 Node / Sequelize 中更新的日志列表
- python - Python - 列表在不使用“return”的情况下在函数外部更新
- python - 从我的脚本调用时无法读取我模块中的熊猫库
- django - 如何在graphene-django中保存文件
- arrays - MongoDB:仅获取数组中的第一个子文档,该子文档作为文档的属性存在
- ios - 从网络与 NSData 深度链接
- prolog - 如何查看 Prolog 查询的详细顺序(执行)?
- docker - 在 Docker 的开发和生产中处理应用程序 .env 文件的最佳实践是什么?
- javascript - react-responsive-carousel 没有正确显示