日期:2014-05-16  浏览次数:20349 次

用过Dtree的请进。
我的代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Dtree</title>

<link rel="StyleSheet" href="js/dtree/dtree.css" type="text/css" />
<script type="text/javascript" src="js/dtree/dtree.js"></script>

</head>

<body>
<div class="dtree">
<script type="text/javascript">
<!--

MY_DTree = new dTree('MY_DTree');//创建树,名称为'MY_DTree',和树的对象变量名必须一致。

alert(MY_DTree);
//alert(MY_DTree.toString());

document.write(MY_DTree);

//-->
</script>

</div>
</body>

</html>
----------------------
我的问题如下:
只是一个new dTree()。并且在他的js内的function dTree(objName)内也没发现有关其他的函数的调用。
此时 alert(MY_DTree)和alert(MY_DTree.toString())是一样的,有内容出现。就是
<div class="dtree">
</div>
也就是调用了函数
dTree.prototype.toString = function() {

var str = '<div class="dtree">\n';

if (document.getElementById) {
//只要用new dTree('树名'),就可以到这里。

if (this.config.useCookies) this.selectedNode = this.getSelected();

str += this.addNode(this.root);

} else str += 'Browser not supported.';

str += '</div>';

if (!this.selectedFound) this.selectedNode = null;

this.completed = true;

alert(str);

return str;

};

请问各位,什么时候调用的啊。
没看出来啊。



------解决方案--------------------
直接new dTree()是不会进入toString方法,只会执行构造函数
调用了进入该方法的语句是:
alert(MY_DTree);//这句会调用toString方法

------解决方案--------------------
d = new dTree("d");
d.add(0,-1,"<b>本站资源</b>","resources.aspx");
d.add(1,0,'语文','resources.aspx?type=new&subjectId=1');
d.add(2,0,'语文','resources.aspx?type=new&subjectId=1');
d.add(3,1,'xxxx','resources.aspx?type=new&subjectId=1');
d.add(4,1,'xxxx','resources.aspx?type=new&subjectId=1');
document.write(d);//document.write(d.toString());
------解决方案--------------------
document.write(MY_DTree);
相当于
document.write(MY_DTree.toString());
------解决方案--------------------
document.write(这里需要字符串)。不进行toString能得到字符串吗?