javascript - 带有 getElementsByTagName 的嵌套标签名称不起作用

标签 javascript jquery html css sorting

我有以下包含表及其从数据库查询的数据的 div

<div id="content">
<table>
<tbody>
   <tr>
       <th class="header" colspan="2">Food items include:</th>
   </tr>
   <tr>
      <td id="15" class="fruits">Papaya+salt</td>
      <td><p>This includes papaya and salt</p></td>
   </tr>
   <tr>
      <td class="meat">Baked chicken</td>
      <td><p>This includes a chicken thide and kethup</p></td>
   </tr>
   <tr>
      <td id="1" class="Juices">Strawberry Sting</td>
      <td><p>Sugar, color and water</p></td>
   </tr>
<table>
</div>

该表在 page.aspx 中定义

这是我用来按字母顺序对表格数据进行排序的代码

OldFunc = window.onload;
window.onload = OnLoad;

function OnLoad(){
    try{
        var pathName = window.location.pathname.toLowerCase();
        if( pathName=="/Resources/Glossary.aspx") {
                sort_it();
            }   
        OldFunc();
    }
    catch(e) {
    }
} 

function TermDefinition(def_term,def_desc)
{    
    this.def_term=def_term;  
    this.def_desc=def_desc; 
}    

function sort_it()
{
    var gloss_list=document.getElementsByTagName('td');    
    var desc_list=document.getElementsByTagName('td p');    
    var gloss_defs=[];   
    var list_length=gloss_list.length;     
    for(var i=0;i<list_length;i++)    
    {      
       gloss_defs[i]=new TermDefinition(gloss_list[i].firstChild.nodeValue,desc_list[i].firstChild.nodeValue);      
    }     
    gloss_defs.sort(function(a, b){
      var termA=a.def_term.toLocaleUpperCase(); 
      var termB=b.def_term.toLocaleUpperCase();
      if (termA < termB) 
       return -1;
      if (termA > termB)
       return 1;
      return 0; 
    })    
    for(var i=0;i<gloss_defs.length;i++)
    {
       gloss_list[i].firstChild.nodeValue=gloss_defs[i].def_term;
       desc_list[i].firstChild.nodeValue=gloss_defs[i].def_desc;  
    }
}

请查看两个 getElementsByTagName,我认为我滥用了它的内容,因为没有对输出进行任何操作。

最佳答案

无效:

desc_list=document.getElementsByTagName('td p');

您不能将 css 选择器传递给该函数,只能传递一个标签名称,如 div\span input 等。

你可能想使用:

desc_list = $('td p');

由于您使用 jQuery 或 document.querySelectorAll 标记了普通 js 的问题:

desc_list = document.querySelectorAll('td p');

关于javascript - 带有 getElementsByTagName 的嵌套标签名称不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13340525/

相关文章:

javascript - 对象 #<HTMLHeadingElement> 没有方法 'fadeOut'

javascript - PHP中的执行函数取决于Angular发送的whatsapp

javascript - iOS 上的 Facebook 浏览器 : problems with localStorage

javascript - 使用jquery设置输入值

javascript - Google Maia .css 和 .js 文件?

javascript - 通过php制作xml时如何处理融合图表中的特殊字符

javascript - 为什么这个 jqueryeach() 函数不会调用?

javascript - 如果我在特定的 div 中,如何让 jQuery 启动?

javascript - 如何获取 contenteditable div 中当前正在编辑的节点的索引

html - 使用 HTML 和 CSS 突出显示当前页面菜单选项卡