我有以下包含表及其从数据库查询的数据的 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/