【发布时间】:2019-10-27 13:44:02
【问题描述】:
我正在尝试使用 jQuery 创建搜索脚本。我试图让搜索框根据它们各自的标题过滤照片,并且应该在您键入时实时过滤照片,并且显示的照片应该与搜索匹配。 这是我的 HTML 和 Javascript 代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Photo Gallery</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="js/lightbox/css/lightbox.css">
<link href="https://fonts.googleapis.com/css?family=Roboto+Mono&display=swap" rel="stylesheet">
<link rel="stylesheet" href="css/main.css">
</head>
<body>
<div class=container>
<!-- <form action="form-field"> -->
<input type="search" id="site-search" placeholder="Search(16pt)">
<!-- </form> -->
<div class="images-container">
<a href= "photos/01.jpg" data-alt="Hay Bales"data-lightbox="image-1" data-title="I love hay bales. Took this snap on a drive through the countryside past some straw fields."><img src="photos/thumbnails/01.jpg" alt="Image 1"></a>
<a href= "photos/02.jpg" data-alt ="Lake"data-lightbox="image-1" data-title="The lake was so calm today. We had a great view of the snow on the mountains from here."><img src="photos/thumbnails/02.jpg" alt="Image 2"></a>
<a href= "photos/03.jpg" data-alt="Canyon"data-lightbox="image-1" data-title="I hiked to the top of the mountain and got this picture of the canyon and trees below."><img src="photos/thumbnails/03.jpg" alt="Image 3"></a>
<a href= "photos/04.jpg" data-alt="Iceberg"data-lightbox="image-1" data-title="It was amazing to see an iceberg up close, it was so cold but didn’t snow today. "><img src="photos/thumbnails/04.jpg" alt="Image 4"></a>
<a href= "photos/05.jpg" data-alt="Desert"data-lightbox="image-1" data-title="The red cliffs were beautiful. It was really hot in the desert but we did a lot of walking through the canyons."><img src="photos/thumbnails/05.jpg" alt="Image 5"></a>
<a href= "photos/06.jpg" data-alt="Fall"data-lightbox="image-1" data-title="Fall is coming, I love when the leaves on the trees start to change color."><img src="photos/thumbnails/06.jpg" alt="Image 6"></a>
<a href= "photos/07.jpg" data-alt="Plantation"data-lightbox="image-1" data-title="I drove past this plantation yesterday, everything is so green!"><img src="photos/thumbnails/07.jpg" alt="Image 7"></a>
<a href= "photos/08.jpg" data-alt="Dunes"data-lightbox="image-1" data-title="My summer vacation to the Oregon Coast. I love the sandy dunes!"><img src="photos/thumbnails/08.jpg" alt="Image 8"></a>
<a href= "photos/09.jpg" data-alt="Countryside Lane"data-lightbox="image-1" data-title="We enjoyed a quiet stroll down this countryside lane."><img src="photos/thumbnails/09.jpg" alt="Image 9"></a>
<a href= "photos/10.jpg" data-alt="Sunset"data-lightbox="image-1" data-title="Sunset at the coast! The sky turned a lovely shade of orange."><img src="photos/thumbnails/10.jpg" alt="Image 10"></a>
<a href= "photos/11.jpg" data-alt="Cave"data-lightbox="image-1" data-title="I did a tour of a cave today and the view of the landscape below was breathtaking."><img src="photos/thumbnails/11.jpg" alt="Image 11"></a>
<a href= "photos/12.jpg" data-alt="Blueballs"data-lightbox="image-1" data-title="I walked through this meadow of bluebells and got a good view of the snow on the mountain before the fog came in."><img src="photos/thumbnails/12.jpg" alt="Image 12"></a>
</div>
</div>
<script src="js/jquery-3.4.1.min.js"></script>
<script src="js/lightbox/js/lightbox-plus-jquery.min.js"></script>
<script src="js/main.js"></script>
</body>
</html>
$("#site-search").keyup(function() {
let searchInput=$("#site-search").val().toLowerCase();
$('a').each(function(element){
let caption=$(element).attr('data-title').toLowerCase();
if (caption.includes(searchInput)) {
$(element).show();
}
});
});
由于某种原因,我收到一条错误消息,指出 toLowercase 未定义。这是为什么?你们能对我的代码提出建议以修复错误吗?我有点卡住了,不知道我是否走在正确的轨道上。
【问题讨论】:
标签: javascript jquery error-handling event-handling