I found my problem lying the the use of the "name" attribute. When I changed this and started targeting 'id's, everything worked normally.
For those who care, here's the new code:
Code:
function build_navList(){
var bodyAry = document.getElementsByTagName('body');
var body = bodyAry[0];
var navList = document.createElement("ul");
navList.setAttribute("id", "navList");
var navItems = document.getElementsByTagName('h3');
if (navItems[0] == null)
{
return
}
else
{
//Note: This loop is for IE browsers. Here I will make an link based off all h3's in the page.
if (typeof window.attachEvent != "undefined"){
for (var i=0; i<navItems.length; ++i)
{
var h3Anchor = document.createElement('a')
h3Anchor.setAttribute("id",navItems[i].innerText);
navItems[i].parentNode.insertBefore(h3Anchor,navItems[i])
var navLinkItem = document.createElement("li");
var navLink = document.createElement("a");
navLink.setAttribute("class", "internalNavLink");
navLink.setAttribute("href",window.location.hash='' + "#" + navItems[i].innerText);
var navLinkName = navItems[i].innerText;
var navLinkNameText = document.createTextNode(navLinkName)
navLink.appendChild(navLinkNameText);
navLinkItem.appendChild(navLink);
navList.appendChild(navLinkItem);
}
}
else
{
//Note: This loop is for other 'modern' browsers like FireFox, Safari and Opera. Same h3 ideas.
for (var i=0; i<navItems.length; ++i)
{
var h3Anchor = document.createElement('a');
h3Anchor.setAttribute("id",navItems[i].textContent);
navItems[i].parentNode.insertBefore(h3Anchor,navItems[i]);
var navLinkItem = document.createElement("li");
var navLink = document.createElement("a");
navLink.setAttribute("class", "internalNavLink");
navLink.setAttribute("href","#" + navItems[i].textContent);
var navLinkName = navItems[i].textContent;
var navLinkNameText = document.createTextNode(navLinkName);
navLink.appendChild(navLinkNameText);
navLinkItem.appendChild(navLink);
navList.appendChild(navLinkItem);
}
}
}
//Note: Now I'm generating an "back to top" link based of the initial h1 found on the page and placing it at the top of the nav list
var h1Ary = document.getElementsByTagName('h1');
var topH1 = h1Ary[0];
topH1.setAttribute("id", "topOfPageAnchor")
var bck2TopLinkItem = document.createElement('li');
var bck2TopLink = document.createElement('a');
var bck2TopLinkTxt = document.createTextNode('Back To Top');
bck2TopLink.appendChild(bck2TopLinkTxt);
bck2TopLinkItem.appendChild(bck2TopLink);
bck2TopLinkItem.setAttribute("id","backToTopLink");
bck2TopLink.setAttribute("href","#topOfPageAnchor");
var firstNavLinkItem = navList.firstChild
firstNavLinkItem.parentNode.insertBefore(bck2TopLinkItem,firstNavLinkItem)
//Note: Now i'm pinning my findings to the page.
var navListHolder = document.createElement('div');
navListHolder.setAttribute("id", "navListHolder");
navListHolder.appendChild(navList);
body.appendChild(navListHolder);
}
Bookmarks