View Full Version : Div cannot be found using getElementsByTagName

04-01-2009, 02:54 PM
I have a few issues here:

for some background, I am working with a Microsoft solution that generates report pages, but I don't want one of the links to work. My effort is to replace the link with a javascript:void(0).

1) I am searching for a div with a class of 'myclass', but the array is skipping it entirely.
Many of the divs on the page are found, but not the one I am after, it is very strange.

2) Even if I do find the div (in other tests), I can't get the link to be replaced without referencing document.links[i]. I can pull the same value by using document.getElementsByTagName('div')[i].childNodes[0]); but I cannot replace it with a different value. Instead I just get a JS page error saying that it is not supported or something.

I know my code below will not work, since it is taking for granted that the only links on the page are actually in a div. So what happens when there is a link outside of the div? Then the reference that I have of document.links[i], becomes irrelevant to the position in the array based on the number of div's.

here is what I have:

<script type="text/javascript">
window.onload= function(){

function DisableEnableLinks()
var elements=document.getElementsByTagName('div');
for (i=0; i<elements.length; i++){
if (elements[i].className == 'myclass'){
document.links[i].href = "javascript:void(0)";

04-01-2009, 04:16 PM
this just became much more difficult. Even if I get this working, I don't see how I can overwrite the anchor since there isn't one! One of the JS files must be doing a getElement lookup and then using a postback or something, because on the text that I am trying to remove the link from, there is absolutely no event to cause the hyperlink.

it is simply text with an H3 tag and a class assigned to the <tr> it is in.

04-01-2009, 04:19 PM
post the HTML structure of your site (or the significant repetitive part of it - divs and links)

04-01-2009, 05:11 PM
It is not pretty since it was generated by MS's PerformancePoint and is being used in Sharepoint.
The events you see in the code below are actually for a separate drop down menu for the webpart.
I am trying to find out how they linked
<span>KPI Dashboard</span>
I have been going through all of the back end JS libraries but they are written well...meaning nothing adhoc ;-)

The problem is that even though I have a class id, and certain text I can go on, I have to leave it globably usable since each page will have a different id for the webpart as well as different text for the title.

<table width="100%" cellpadding="0" cellspacing="0" border="0">
<td id="MSOZoneCell_WebPartctl00_m_WebPart_5dea3c6916304228a4970e4e171e2fde" vAlign="top"><table TOPLEVEL border="0" cellpadding="0" cellspacing="0" width="100%">
<td><table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr class="ms-WPHeader">
<td title="KPI Dashboard" id="WebPartTitlectl00_m_WebPart_5dea3c6916304228a4970e4e171e2fde" style="width:100%;"><h3 class="ms-standardheader ms-WPTitle"><nobr><span>KPI Dashboard</span><span id="WebPartCaptionctl00_m_WebPart_5dea3c6916304228a4970e4e171e2fde"></span></nobr></h3></td><td align="right" style="padding-right:2px"><div style="cursor: pointer" class="ms-HoverCellInActive" onmouseout="this.className='ms-HoverCellInActive'" onmouseover="this.className='ms-HoverCellActiveDark'"><nobr><a onclick="MSOWebPartPage_OpenMenu(WebPartctl00_m_WebPart_5dea3c6916304228a4970e4e171e2fde_Menu, this, WebPartctl00_m_WebPart_5dea3c6916304228a4970e4e171e2fde,'False');return false;" id="WebPartctl00_m_WebPart_5dea3c6916304228a4970e4e171e2fde_MenuLink" onkeydown="MSOMenu_KeyboardClick(WebPartctl00_m_WebPart_5dea3c6916304228a4970e4e171e2fde_MenuLink, 13, 40)" href="#"><img src="/_layouts/images/Menu1.gif" border="0" align="absmiddle" title="KPI Dashboard Web Part Menu" alt="KPI Dashboard Web Part Menu" style="padding-left:2px;" /></a></nobr></div></td>

04-01-2009, 05:28 PM
In the above posted code, I see only one div(using FF's search) having class="ms-HoverCellInActive"

Please edit your post and add
][/COLOR] tags around your code.