Javascript W3.js html表格筛选器-onkeyup超时
我是Javascript新手,需要帮助解决以下问题: 目前我有一个php页面,在这里我从.xml文件生成html表。它与此PHP函数一起工作:Javascript W3.js html表格筛选器-onkeyup超时,javascript,php,filter,html-table,onkeyup,Javascript,Php,Filter,Html Table,Onkeyup,我是Javascript新手,需要帮助解决以下问题: 目前我有一个php页面,在这里我从.xml文件生成html表。它与此PHP函数一起工作: function xmlToHtmlTable($p_oXmlRoot) { $bIsHeaderProceessed = false; $sTHead = ''; $sTBody = ''; foreach ($p_oXmlRoot as $oNode) { $sTBody .= '<
function xmlToHtmlTable($p_oXmlRoot) {
$bIsHeaderProceessed = false;
$sTHead = '';
$sTBody = '';
foreach ($p_oXmlRoot as $oNode) {
$sTBody .= '<tr class=item>';
foreach ($oNode as $sName => $oValue){
if (!$bIsHeaderProceessed) {
$sTHead .= "<th>{$sName}</th>";
}
$sValue = (string)$oValue;
$sTBody .= "<td>{$sValue}</td>";
}
$bIsHeaderProceessed = true;
$sTBody .= '</tr>';
}
$sHTML = "<table id=demo border=1>
<thead><tr>{$sTHead}</tr></thead>
<tbody>{$sTBody}</tbody>
</table>";
return $sHTML;
函数xmlToHtmlTable($p_oXmlRoot){
$bIsHeaderProceessed=false;
$sHead='';
$sTBody='';
foreach($p_oXmlRoot作为$oNode){
$sTBody.='';
foreach($node作为$sName=>$oValue){
如果(!$bisheaderproceed){
$sHead.=“{$sName}”;
}
$sValue=(字符串)$oValue;
$sTBody.=“{$sValue}”;
}
$bIsHeaderProceessed=true;
$sTBody.='';
}
$sHTML=”
{$sHead}
{$sTBody}
";
返回$sHTML;
生成的表相当长,我需要为其提供过滤选项。我使用w3.js filter table函数找到了满足我要求的简单解决方案。我有一个进行过滤的输入字段:
<input onkeyup="w3.filterHTML('#demo', '.item', this.value)" placeholder="Filter">
一切都很好,但速度非常慢,表格长度为+2000行,搜索正在处理键入的每个字符并刷新结果。我需要的是在2秒后执行键入的word/number/
我在这里发现了类似的问题,但我无法使其与w3.js一起工作(可能做了一些错误的事情,正如我所说,我刚刚开始使用js)。在angularjs中有一个称为ng minlength=“2”的概念..这意味着搜索字符串至少为2个字符后才会执行搜索。所以我在javascript中做了这样的设置。不要直接调用w3 js filter函数,只在搜索字符串长度超过2时调用。希望这有帮助
<p>
<!--<input oninput="w3.filterHTML('#id01', '.item', this.value)" placeholder="Search for names..">-->
<input oninput="searchFilter(this.value)" placeholder="Search for names..">
</p>
<script>
function searchFilter(v) {
var n = v.length;
if(n>2) {
w3.filterHTML('#id01', '.item', v);
}
else {
w3.filterHTML('#id01', '.item', '');
}
}
</script>
函数搜索过滤器(v){
var n=v.长度;
如果(n>2){
w3.filterHTML(“#id01”,“.item”,v);
}
否则{
w3.filterHTML(“#id01”、“.item”、”;
}
}