#javascript #filter #full-text-search #spreadsheet
#javascript #Фильтр #полнотекстовый поиск #электронная таблица
Вопрос:
Я новичок в программировании. Я совсем недавно создал простой инструмент поиска, фильтрующий имена из таблицы, и он работает. Внезапно количество символов в окне HTML-содержимого конструктора веб-сайтов go daddy ограничено. Но мне нужно добавить больше контента. Теперь я использовал электронную таблицу Google для обработки большего содержимого.Я уже включил iFrame в свой код для просмотра электронной таблицы. Но я не знаю, как отфильтровать имена из электронной таблицы, используя код javascript. Пожалуйста, помогите мне. Заранее спасибо.
Вот мой код:
Большинство моих кодов были взяты из других потоков, и я просто изменил их для своих нужд.
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
<style>
body {
background-image: url("http://www.sethnet.org/wp-content/uploads/2018/08/5485436-business-wallpaper.jpg");
background-size: 1080px 800px;
background-repeat: no-repeat;
background-position: fixed;
}
*{
box-sizing: border-box;
}
#myInput {
background-image:url('https://previews.123rf.com/images/arhimicrostok/arhimicrostok1708/arhimicrostok170801660/84518390-icon-of-loupe-search-button-magnifying-glass-flat-design-style-.jpg');
background-size: 32px 22px;
background-position: 1%;
background-repeat: no-repeat;
width: 50%;
font-size: 16px;
padding: 12px 20px 12px 40px;
border: 5px solid #ADD8E6;
position: center;
margin-top: 50px;
margin-left : 25% ;
}
</style>
</head>
<body>
<!-- Header -->
<div class="w3-center">
<h1> <br><br></h1>
</div>
<div class="w3-center">
<h1 class="w3-xxlarge w3-text-white"><span class="w3-padding w3-black w3-opacity-min"><b>We</b></span> <span class="w3-pink w3-opacity-min w3-hide-small w3-text-White">Search</span></h1>
</div>
</header>
<div>
<input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for Names.." title="Type in a name">
</div>
<div class="w3-center" "w3-margin">
<p><br></p>
<iframe src="https://docs.google.com/spreadsheets/example"
style="height:1000px;width:100%;
border: 3px solid #ADD8E6;
transition:height 1.5s ease;
-webkit-transition:height 1.5s ease;
-moz-transition:height .25s ease; onload=access()">
</iframe>
</div>
<div class="w3-center">
<h1> <br><br><br></h1>
</div>
<script>
window.onload = function() {
var rows = document.querySelectorAll('iframe');
for (var i = 0; i < rows.length; i ) {
rows[i].style.display = 'none';
}
}
document.addEventListener('DOMContentLoaded', function () {
ContactsearchFX();
document.getElementById('myInput').addEventListener('input', ContactsearchFX);
});
function ContactsearchFX() {
var input, filter, Spreadsheet, tr, td, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
Spreadsheet = document.getElementByTagName("iframe");
tr = Spreadsheet.rows;
for (i = 0; i < tr.length; i ) {
td = tr[i].cells[0];
if (td) {
tr[i].style.display = filter amp;amp; td.textContent.toUpperCase().indexOf(filter) > -1
? "" : "none";
}
}
}
</script>
</body>
</html>
Комментарии:
1. Добро пожаловать в Stack Overflow! Пожалуйста, добавьте какой-нибудь код, который вы пробовали.
2. Привет @JSchirrmacher, вот мой полный код. Поделитесь со мной, поскольку я не очень разбираюсь в программировании. 🙂
Ответ №1:
Есть много вещей, которые не будут работать.
- Есть пара ошибок JavaScript, которые вы видите, если открываете веб-консоль. Сначала попробуйте их исправить. Одним из них является вызов функции
getElementByTagName()
, которая не существует. Есть функцияgetElementsByTagName()
(обратите внимание на ‘s’), которая возвращает список тегов — вам нужен первый. - Содержимое iframe содержит немного, что вы видите, если открываете URL, указанный в
src
атрибуте вашего<iframe>
, поэтому вы не можете найти большую часть строк. Но, возможно, это просто пример, который вы предоставили вместо использования реальной электронной таблицы. - Но iframe не будет загружен, когда ваш код попытается получить к нему доступ. Это может помочь вызвать
ContactsearchFX()
только тогда, когда что-то вводится в ваше текстовое поле — это зависит от того, что именно вы хотите сделать. - Содержимое само по себе является HTML-документом, но оно не содержит структуру данных со строками напрямую. Для доступа к содержимому необходимо использовать функции DOM (например, такие, как
getElementsByTagName()
например).
Я надеюсь, что это немного поможет, но я боюсь, что может быть недостаточно получить некоторые фрагменты кода из Интернета, чтобы запустить приложение… Я думаю, вам нужно будет найти кого-то, кто сможет выполнить эту работу за вас, если вы не готовы самостоятельно изучать программирование.