是一个menu的javascript,问题出在,
如果我直接在javascript中调用增加menu的方法
addItem(增加一个菜单栏)的方法,如:
//增加一个菜单栏!Y代表有下拉菜单,
Menu.addItem("menu1", "菜单1", "菜单1的提示", "Y", "null");//menu1菜单栏下面增加一个命令!N表示没有下一级的命令
Menu.addSubItem("menu1", "菜单1下面的一个菜单", "这个命令的提示",  "N", "null");
没有问题,整个javascript运行没有问题现在我的做法是把这些数据menu1,名字,提示,等存在数据库
然后在调出数据库以后,写成一个XML文档,在客户端用DOM方式解析XML文档
代码如下:
var xmldom = new ActiveXObject("Microsoft.XMLDOM")
xmldom.loadXML(xmlhttp.responseText);var nodes = xmldom.documentElement.selectNodes("/root/NODE");
............................
for(var i=0;i<nodes.length;i++) {
  var str_ID=nodes[i].selectSingleNode("ID").text;
  var str_Text=nodes[i].selectSingleNode("TEXT").text;
  var str_Hint=nodes[i].selectSingleNode("HINT").text;
  var str_Sub=nodes[i].selectSingleNode("SUB").text;
  var str_Frame=nodes[i].selectSingleNode("FRAME").text;
  Menu.addItem(str_ID,str_Text,str_Hint,str_Sub,str_Frame);
}
for(var m=0;m<nodes.length;m++)
{
   if(nodes[m].selectSingleNode("SUB").text=='Y') 
     {
        var subnodes=nodes[m].selectNodes("SUBNODE");
        for(var j=0;j<subnodes.length;j++)
       {
           var sub_ID=subnodes[j].selectSingleNode("PARENT_ID").text;
  var sub_Text=subnodes[j].selectSingleNode("TEXT").text;
  var sub_Hint=subnodes[j].selectSingleNode("HINT").text;
           var sub_Sub=subnodes[j].selectSingleNode("SUB").text;
  var sub_Frame=subnodes[j].selectSingleNode("FRAME").text;   Menu.addSubItem(sub_ID,sub_Text,sub_Hint,sub_Sub,sub_Frame);
        }
    } 
}
我测试过,得到的str_ID,str_Text,等和sub_ID sub_Frame等,是数据库的存储内容,和我直接在addItem 和 addSubItem中引号中间的内容也相同。
难道,我直接写成
Menu.addItem("menu1", "菜单1", "菜单1的提示", "Y", "null");
和通过变量赋值Menu.addItem(str_ID,str_Text,str_Hint,str_Sub,str_Frame);
不一样吗?
哪位知道,帮帮忙!

解决方案 »

  1.   

    看看是不是编码的问题,将你得到的数据的打出来看看,很多情况下的错误是因为chr(0)这样的字符存在
      

  2.   

    我的数据是通过xml形式的文档传递倒客户端的,我用alert打出来过,没有问题。如下:
    <?xml version="1.0" encoding="gb2312"?><root>
    <NODE>
    <ID>menu1</ID>
    <TEXT>定制工具</TEXT>
    <HINT>根据自己的需要定制界面</HINT>
    <FRAME>null</FRAME>
    <SUB>Y</SUB>
    <SUBNODE>
    <PARENT_ID>menu1</PARENT_ID>
    <TEXT>定制界面</TEXT>
    <HINT>选择自己喜欢的界面</HINT>
    <FRAME>null</FRAME>
    <SUB>N</SUB>
    </SUBNODE>
    <SUBNODE>
        <PARENT_ID>menu1</PARENT_ID>
    <TEXT>修改配置</TEXT>
    <HINT>修改默认配置</HINT>
    <FRAME>null</FRAME>
    <SUB>N</SUB>
    </SUBNODE>
    <SUBNODE>
        <PARENT_ID>menu1</PARENT_ID>
    <TEXT>修改密码</TEXT>
    <HINT>修改系统默认密码</HINT>
    <FRAME>null</FRAME>
    <SUB>N</SUB>
    </SUBNODE>
    </NODE>
    <NODE>
    <ID>menu2</ID>
    <TEXT>任务管理</TEXT>
    <HINT>具体任务的管理</HINT>
    <FRAME>null</FRAME>
    <SUB>Y</SUB>
    <SUBNODE>
    <PARENT_ID>menu2</PARENT_ID>
    <TEXT>物料绑定</TEXT>
    <HINT>对物料进行绑定</HINT>
    <FRAME>null</FRAME>
    <SUB>N</SUB>
    </SUBNODE>
    <SUBNODE>
       <PARENT_ID>menu2</PARENT_ID>
    <TEXT>资源分配</TEXT>
    <HINT>对车间资源进行分配</HINT>
    <FRAME>null</FRAME>
    <SUB>N</SUB>
    </SUBNODE>
    <SUBNODE>
        <PARENT_ID>menu2</PARENT_ID>
    <TEXT>任务信息</TEXT>
    <HINT>查看车间任务的详细信息</HINT>
    <FRAME>null</FRAME>
    <SUB>N</SUB>
    </SUBNODE>
    <SUBNODE>
        <PARENT_ID>menu2</PARENT_ID>
    <TEXT>任务分配</TEXT>
    <HINT>对车间任务进行分配</HINT>
    <FRAME>null</FRAME>
    <SUB>N</SUB>
    </SUBNODE>
    </NODE>
    <NODE>
    <ID>menu3</ID>
    <TEXT>资源管理</TEXT>
    <HINT>车间资源的管理</HINT>
    <FRAME>null</FRAME>
    <SUB>Y</SUB>
    <SUBNODE>
        <PARENT_ID>menu3</PARENT_ID>
    <TEXT>查看信息</TEXT>
    <HINT>查看资源信息</HINT>
    <FRAME>null</FRAME>
    <SUB>N</SUB>
    </SUBNODE>
    <SUBNODE>
        <PARENT_ID>menu3</PARENT_ID>
    <TEXT>资源分配</TEXT>
    <HINT>对资源进行分配</HINT>
    <FRAME>null</FRAME>
    <SUB>N</SUB>
    </SUBNODE>
    </NODE>
    这是其中的一个节点,其他节点的形式相同。