这是我今天遇到的一个有趣的复杂功能:调用tbody标签也会返回thead。
首先是代码:
function GetAnchors(){
if(!document.getElementById('WebPartWPQ2')){
return;
};
var item = document.getElementById('WebPartWPQ2').getElementsByTagName('table');
if(!item[0]){
return;
}
try{
item = item[0].firstChild.firstChild.firstChild.getElementsByTagName('table');
item = item[0].getElementsByTagName('tbody');
item = item[0].getElementsByTagName('tr');
for(i=0; i<item.length; i++){
if(item[i].getElementsByTagName('td')[1].hasAttribute("height")){
item[i].getElementsByTagName('td')[1].firstChild.innerHTML = Hijack( item[i].getElementsByTagName('td')[1].firstChild.innerHTML);
}
}
}catch(err){
return;
}
}
新的代码行:
item = item[0].getElementsByTagName('tbody');
我已经测试过,所以这有效:
item = item[1].getElementsByTagName('tbody');
所以它返回带有tbody的thead元素。
对于那些选择它的人,是的,这是SharePoint。(2013)浏览器在兼容模式IE9中是IE10。
我在几页上都有这个,除了一个之外它有效,html的结构没有显着差异(即表和单元格结构相同,只是不同内的文字。)
我只是好奇,有没有人见过这个?还是更好的一些文档?
或者这只是IE?
答案 0 :(得分:1)
感谢您的关注,但我明白了。
显然,在SharePoint 2013(也可能是2010年)中,“分配给列”标题创建为表格:
<div class="ms-vh-div" name="AssignedTo" SortFields="" ResultType="" FieldType="User" DisplayName="Assigned To" CTXNum="7" FilterDisableMessage="" Filterable="" FilterDisable="" SortDisable="" Sortable="">
<table dir="none" cellSpacing="0" cellPadding="0">
<tbody>
<tr>
<td class="ms-imnImgTD"><img id="imnhdr7" onload="IMNRegisterHeader(event)" border="0" alt="" src="" width="12" height="12" valign="middle" altbase="Presence enabled for this column">
</td>
<td class="ms-vh ms-imnTxtTD" noWrap="">
<a id="diidSort7AssignedTo" class="ms-headerSortTitleLink" onfocus="OnFocusFilter(this)" onclick="javascript:return OnClickFilter(this,event);" href="javascript: " SortingFields=""><img class="ms-hidden" border="0" alt="Use SHIFT+ENTER to open the menu (new window)." src="" width="1" height="1"></a>
<img border="0" alt="" src="">
<img border="0" alt="" src="">
</td>
</tr>
</tbody>
</table>
因此,它在thead中返回了tbody。
这可能听起来很明显,但它的嵌套非常深。
再次感谢您的时间。