我正在为学校做这项作业,但在我找不到的地方有一个逻辑。我几乎 100% 确定它setElemId()
是应该设置和返回元素 id 的函数,但它一直没有返回任何内容,当我href
为快速链接设置时,它只是设置#
而不是ID
.
HTML
<body>
<div id="page">
<div id="logo"><img src="hlogo.jpg" alt="Historic Documents" /></div>
<div id="logosub">Department of History<br />Midwest University</div>
<div id="doc">
<h1 id="doctitle">The Federalist Papers <br />No. 10</h1>
<p id="docsubtitle">The Union as a Safeguard Against
Domestic Faction and Insurrection<br />From the New York Packet. Friday,
November 23, 1787.</p>
<p id="intro">To the people of the state of New York:</p>
<p id="firstp">Among the numerous advantages promised by a well-constructed
Union, none deserves to be more accurately developed than its
tendency to break and control the violence of faction. The friend of
distresses under which we labor have been erroneously charged on the
</p>
<p>By a <dfn id="firstkey">faction</dfn>, I understand a number of
citizens, whether amounting to a majority or a minority of the whole,
interest, adversed to the rights of other citizens, or to the permanent
and aggregate interests of the community.</p>
<p>The other point of difference is, the greater number of citizens and
extent of territory which may be brought within the compass of
the former than in the latter. The smaller the society, the fewer
</p>
</div>
</div>
</body>
</html>
Javascript
function addEvent(object, evName, fnName, cap) {
if (object.attachEvent)
object.attachEvent("on" + evName, fnName);
else if (object.addEventListener)
object.addEventListener(evName, fnName, cap);
}
addEvent(window, "load", makeKeyWordBox, false);
// Returns an array of Text
function makeElemList(elem)
{
var elemList = document.getElementsByTagName('dfn');
var elemTextArr = new Array();
for(var i = 0; i < elemList.length; i++)
elemTextArr[i] = elemList[i].innerText.toLowerCase();
elemTextArr.sort();
return elemTextArr;
}
// Searches for and returns a single ID
function setElemId(elem, elemText)
{
var elemList = document.getElementsByTagName(elem);
var elemTextArr = new Array();
var elemId;
for(var i = 0; i < elemList.length; i++)
{
elemTextArr[i] = elemList[i].innerText.toLowerCase();
if(elemTextArr[i] == elemText)
{
if(elemList[i].id = null)
{
elemId = elemText + i;
elemList[i].setAttribute('id', elemId);
return elemId;
}
else
{
alert(elemList[i].id);
elemId = elemList[i].id;
return elemId;
}
}
}
}
function makeKeyWordBox()
{
var keywords = makeElemList('dfn');
var historyDoc = document.getElementById('doc');
var keywordBoxTitle = document.createElement('h1');
keywordBoxTitle.innerText = "Keywords";
var keywordBox = document.createElement('div');
keywordBox.id = "keywords";
keywordBox.appendChild(keywordBoxTitle);
var ulList = document.createElement('ul');
keywordBox.appendChild(ulList);
for(var i = 0; i < keywords.length; i++)
{
var linkId = setElemId('dfn', keywords[i]);
var newListItem = document.createElement('li');
var newLink = document.createElement('a');
newLink.innerText = keywords[i];
newLink.href = "#" + linkId;
newListItem.appendChild(newLink);
ulList.appendChild(newListItem);
}
historyDoc.insertBefore(keywordBox, historyDoc.firstChild);
}