0
我正在構建一個單頁面應用程序,其中我有一個html表格,我需要實現一個搜索框,通過表格的行循環並隱藏與搜索不匹配的搜索框盒文本。問題是作爲一個SPA我在互聯網上找到的所有javascript代碼都是基於$(document).ready(function(),所以它不起作用。我試着採用以下方法:SPA - 搜索html表格
在我viewmodel.js我有:
function filter2(search, tblData) {
window.phrase = document.getElementById(search).value;
var words = window.phrase.toLowerCase().split(" ");
var table = document.getElementById(tblData);
var ele;
for (var r = 1; r < table.rows.length; r++) {
ele = table.rows[r].innerHTML.replace(/<^>+>/g, "");
var displayStyle = 'none';
for (var i = 0; i < words.length; i++) {
if (ele.toLowerCase().indexOf(words[i]) >= 0)
displayStyle = '';
else {
displayStyle = 'none';
break;
}
}
table.rows[r].style.display = displayStyle;
}
}
,並在我的view.html:
<input type="text" id="search" placeholder="Search..." data-bind="click: filter2"/>
,其中tblData是我的HTML表格和搜索是搜索框我這 不工作,如果任何人。有什麼想法請分享。先謝謝您。
編輯:這是我的表中的HTML:
<table id="tblData"class="table table-striped" >
<thead>
<tr><th>Domain Name</th><th>Full name</th><th style="text-align:center">Email</th></tr>
</thead>
<tbody data-bind="foreach: employee">
<tr>
<td style="width:100px" data-bind="text: username"></td>
<td style="width:120px"data-bind="text: fullName"></td>
<td style="text-align:right;width:120px" data-bind="text: email"></td>
</tr>
</tbody>
</table>
有隔靴搔癢在這個問題開始回答您。您的''元素使用'data-bind'屬性,但不涉及您正在使用的任何框架。如果你不使用框架,你需要某種onclick處理程序。沒有看到你的表/數據我不知道你的'innerHTML.replace'是否正在運行..或者如果你應該使用'innerText'(我相信它被稱爲。)如果你*使用一個框架,並且你已經檢查以確保調用了「filter2」,您需要檢查控制檯日誌中是否有錯誤。 –
ty爲答覆。我用html表格編碼了帖子。對於data0binding,我使用了knockout.js。 –