Javascript 获取未在输入元素的键控上定义的函数

Javascript 获取未在输入元素的键控上定义的函数,javascript,Javascript,给出下表(此表的稍微修改版本位于),但搜索所有列,我得到一个错误,即在文本框中输入值时,HTMLInputElement.onkeyup未定义searchAttorneys。另外,在搜索表时如何防止表头消失 HTML JS 功能搜索律师(){ var输入、过滤器、表格、tr、td、i; 输入=document.getElementById(“搜索律师”); filter=input.value.toUpperCase(); 表=document.getElementById(“律师”); t

给出下表(此表的稍微修改版本位于),但搜索所有列,我得到一个错误,即在文本框中输入值时,HTMLInputElement.onkeyup未定义
searchAttorneys。另外,在搜索表时如何防止表头消失

HTML


JS

功能搜索律师(){
var输入、过滤器、表格、tr、td、i;
输入=document.getElementById(“搜索律师”);
filter=input.value.toUpperCase();
表=document.getElementById(“律师”);
tr=table.getElementsByTagName(“tr”);
对于(i=0;i-1){
发现=真;
打破
}
}
}
如果(找到){
tr[i].style.display=“”;
}否则{
tr[i].style.display=“无”;
}
}
}

jsiddle:

将jsiddlejavascript加载类型设置为nowrap(任意一种)。另外2个(onload/ondomready)将把函数包装在另一个函数中,使它对内联onkeyup不可见。

HTML

<input type="text" id="search-attorneys" placeholder="Search for names.." title="Type in a name">

Javascript

$(document).ready(function(){
  $('search-atorneys').on('keyup', function(){
    var input, filter, table, tr, td, i;
    input = document.getElementById("search-attorneys");
    filter = input.value.toUpperCase();
    table = document.getElementById("attorneys");
    tr = table.getElementsByTagName("tr");
    for (i = 0; i < tr.length; i++) {
      tds = tr[i].getElementsByTagName("td");
      var found = false;
      for (j = 0; j < tds.length; j++) {
        td = tds[j];
        if (td) {
          if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
            found = true;
            break;
          }
        }
      }
      if (found) {
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    }
  });
});
$(文档).ready(函数(){
$('search-atorneys')。在('keyup',function()上{
var输入、过滤器、表格、tr、td、i;
输入=document.getElementById(“搜索律师”);
filter=input.value.toUpperCase();
表=document.getElementById(“律师”);
tr=table.getElementsByTagName(“tr”);
对于(i=0;i-1){
发现=真;
打破
}
}
}
如果(找到){
tr[i].style.display=“”;
}否则{
tr[i].style.display=“无”;
}
}
});
});

从js内部执行而不是从html内部执行通常是更好的方法。

在w3schools站点的元素上方没有定义它。@Matt如果您没有文档就绪的侦听器,则需要先分配它,然后才能修复可能的副本,但是如何防止键入时表头消失:在tbody中搜索,而不是在完整的表中搜索。所以thead没有被搜索所触动我已经更新了提琴,但是搜索仍然没有启动:在:
$('search-atorneys')欢迎使用一点
。在(…
使它像:
$('search-atorneys')。在(…
as
search-atorneys
id
<input type="text" id="search-attorneys" placeholder="Search for names.." title="Type in a name">
$(document).ready(function(){
  $('search-atorneys').on('keyup', function(){
    var input, filter, table, tr, td, i;
    input = document.getElementById("search-attorneys");
    filter = input.value.toUpperCase();
    table = document.getElementById("attorneys");
    tr = table.getElementsByTagName("tr");
    for (i = 0; i < tr.length; i++) {
      tds = tr[i].getElementsByTagName("td");
      var found = false;
      for (j = 0; j < tds.length; j++) {
        td = tds[j];
        if (td) {
          if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
            found = true;
            break;
          }
        }
      }
      if (found) {
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    }
  });
});