Click to See Complete Forum and Search --> : undefined ?


yilmazma
07-10-2003, 03:16 AM
Hi All,

I have a question about JavaScript. I am trying to create a treeview menu with Javascript. Below, you can find some of the functions I am using :

-----------------------------------------------------
// My problem is in this function ....
function proc(nodeId, parentId, control)
{
var prock = 0;
var plevel = checkLevel(nodeId);
var slevel;
// SEE WHAT checkLevel returned :
alert(nodeId + " PLEVEL = " + plevel)
insertLine(parentId,nodeId,control,plevel);

if (control) {
for (prock=totNum-1;prock>-1;prock--)
{
if (mainElementsArray[prock][1]==nodeId && mainElementsArray[prock][0]!=nodeId)
{
tmpId_if = mainElementsArray[prock][0];
control2 = checkSubElement(tmpId_if);
slevel = checkLevel(tmpId_if);
// **********************************
// PROBLEM HERE : See that slevel is UNDEFINED
// **********************************
alert(tmpId_if + " SLEVEL = " + slevel)
proc(tmpId_if,nodeId,control2,slevel);
}
}
}
}

var glbLevelNum = 0;
function checkLevel(ID)
{
var prt = findParent(ID);
var tmpLevelNum;
if (prt != 0)
{
glbLevelNum++;
checkLevel(prt);
}
else
{
tmpLevelNum = glbLevelNum;
glbLevelNum = 0;
return tmpLevelNum;
}
}

function findParent(ID)
{
for(var fPx=0;fPx<totNum;fPx++)
{
if(mainElementsArray[fPx][0] == ID)
return mainElementsArray[fPx][1];
}
return -1;
}

----------------------------------------------------

In the function proc(...), I have a problem. The function checkLevel seems to return UNDEFINED. I could not find "why" and how to solve this problem...

Can anybody help me?

Yilmaz

pelegk1
07-10-2003, 03:25 AM
html page itself?

yilmazma
07-10-2003, 03:33 AM
Below is the HTML code... I am now working on it, so it is not completed. But code is:


___________________________________________

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
<style>
table {
font-family:verdana;
font-size:12;
}
</style>
</HEAD>
<BODY onLoad="generateTree();">
<div id=treemain style="position:absolute;left:250;">
</div>

<SCRIPT LANGUAGE=javascript>
var treeStr = new String ("1,0,Text 1,http://www.google.com,Folder.gif;\
2,1,Text 2,http://www.yahoo.com,Folder.gif;\
3,1,Text 3,http://www.yahoo.com,Folder.gif;\
4,2,Text 4,http://www.yahoo.com,Folder.gif;\
5,7,Text 5,http://www.yahoo.com,Folder.gif;\
6,10,Text 6,http://www.yahoo.com,Folder.gif;\
7,2,Text 7,http://www.yahoo.com,Folder.gif;\
8,0,Text 8,http://www.yahoo.com,Folder.gif;\
9,4,Text 9,http://www.yahoo.com,Folder.gif;\
10,5,Text 10,http://www.yahoo.com,Folder.gif");

var Img_withSubElm = "ftv2pnode.gif";
var Img_withoutSubElm = "ftv2node.gif";

// ---------------------------------------------------------------
// Split the main string
elmArr = treeStr.split (";")
// The total number of elements in tree
var totNum = elmArr.length
var mainElementsArray = new Array (totNum)

var rExp = /\t/gi;

for (var i=0; i<totNum; i++)
{
var tempStr = new String(elmArr[i])
tempStr = tempStr.replace(rExp, "")
var tempArr = tempStr.split(",");
mainElementsArray[i] = new Array(tempArr.length)
// insert elements and their properties
mainElementsArray[i][0] = tempArr[0];
mainElementsArray[i][1] = tempArr[1];
mainElementsArray[i][2] = tempArr[2];
mainElementsArray[i][3] = tempArr[3];
mainElementsArray[i][4] = tempArr[4];
}


var htmStr = new String("");

function checkSubElement(ID)
{
for (var xi=0; xi<totNum; xi++)
if (mainElementsArray[xi][1] == ID) return 1;
return 0;
}

var glbLevelNum = 0;
function checkLevel(ID)
{
var prt = findParent(ID);
var tmpLevelNum;
if (prt != 0)
{
glbLevelNum++;
checkLevel(prt);
}
else
{
tmpLevelNum = glbLevelNum;
glbLevelNum = 0;
return tmpLevelNum
}
}

function findParent(ID)
{
for(var fPx=0;fPx<totNum;fPx++)
{
if(mainElementsArray[fPx][0] == ID)
return mainElementsArray[fPx][1];
}
return -1;
}

function generateTree()
{
var m,n;
htmStr = "<!--LINE--><table id=tr0 border=0 cellpadding=0 cellspacing=0>"
for (m=totNum-1;m>-1;m--)
{
if (mainElementsArray[m][1] == 0)
{
control = checkSubElement(mainElementsArray[m][0]);
//insertLine(0,mainElementsArray[m][0],control);
proc(mainElementsArray[m][0],0,control);
}
}
htmStr += "<!--LINE--></table>"
treemain.innerHTML = htmStr;
}

function proc(nodeId, parentId, control)
{
var prock = 0;
var plevel = checkLevel(nodeId);
var slevel = 0;

alert(nodeId + " PLEVEL = " + plevel)
insertLine(parentId,nodeId,control,plevel);

if (control) {
for (prock=totNum-1;prock>-1;prock--)
{
if (mainElementsArray[prock][1]==nodeId && mainElementsArray[prock][0]!=nodeId)
{
tmpId_if = mainElementsArray[prock][0];
control2 = checkSubElement(tmpId_if);
slevel = checkLevel(tmpId_if);
// See that slevel is UNDEFINED
alert(tmpId_if + " SLEVEL = " + slevel)
proc(tmpId_if,nodeId,control2,slevel);
}
}
}
}

function lnkClick(nodeId)
{/*
if(ImgId.src == "ftv2mnode.gif")
ImgId.src = "ftv2plastnode.gif";
else
ImgId.src = "ftv2mnode.gif";
*/
}

function insertLine (afterId, newId ,hasSubElm, level)
{
var i, newStr;
if (hasSubElm) imgSrc = Img_withSubElm;
else imgSrc = Img_withoutSubElm;

newStr = "<!--LINE--><tr id=tr" + newId +" onClick='lnkClick(" + newId + ")' style='display=\'\''>"

for (var lp=0;lp<level;lp++)
newStr += "<td></td>";

newStr += "<td><img id=a" + newId + " src='" + imgSrc + "' border=0><td><td valign=center><a href='" + mainElementsArray[newId-1][3] + "'>" + mainElementsArray[newId-1][2] + "</a></td></tr>"

trId = "tr" + afterId;
eval('rExp = /' + trId + '/gi');
tmpArray = htmStr.split ("<!--LINE-->");
lineNum = tmpArray.length;

if (lineNum == 1) return;

for (i=1; i<lineNum-1;i++)
{
tmpXStr = tmpArray[i];
cnt = tmpXStr.search (rExp);
if (cnt != -1)
break;
}
htmStr = "";
for (var k=1; k<=i ; k++)
htmStr += "<!--LINE-->" + tmpArray[k];
htmStr += newStr;
for (var k=i+1; k<lineNum; k++)
htmStr += "<!--LINE-->" + tmpArray[k];

}

</SCRIPT>
<input id=res><br>
<input id=coll name=coll>
<input type=button onClick="checkLevel(coll.value);" value="Level">

</BODY>
</HTML>

____________________________________________