做的一个后台管理页面,左侧为导航页.
用javascript做了一个可以展开的闭合的菜单.
<SCRIPT language="javascript">
function showsubmenu(sid)
{
var obj1= "ss" + sid
whichEl = eval("submenu" + sid);
if (whichEl.style.display == "none")
{
eval("submenu" + sid + ".style.display=\"\";");
document.all.item(obj1).src='image/hide.gif';
}
else
{
eval("submenu" + sid + ".style.display=\"none\";");
document.all.item(obj1).src='image/show.gif';
}
}</SCRIPT>
然后在父菜单下写 <tr id=menuTitle1 onClick="showsubmenu(17)" style="cursor: hand"> 
    <td width="134" height=25 valign="middle" background="image/bg.GIF" class=menu_title onmouseover=this.className='menu_title2'; onmouseout=this.className='menu_title'; > 
      <span>系统管理</span> </td>
    <td width="25"><img src="image/hide.GIF" width="25" height="25" id=ss1></td>
  </tr>提示document.all.item(...)为空或不是对象.怎么解决?

解决方案 »

  1.   

    代码不完全吧?访问对象最好使用 document.getElementById。另外,楼主需要确认一下,页面中是不存在 id=ss17这样的元素。
    上面的代码中只有 is=ss1 .
    如果这是全部的代码的话,当然就找不到 ss17了。
      

  2.   

    DOcument对象为空或者不是对象   问题在于 获得不到这个对象,而获得不到这个对象的原因,基本又这个两个问题
      一是:没有这个get到这个对象,也 就是说 这个指定的id,可以检查下 id名字是否写错了
     二是:页面没有加载完就开始获得那个指定的id,可以将代码剪切到</body>前面,也就是最后一行
      

  3.   

    少用eval和document.all把,都不是规范的写法。尤其是eval,尽量少用,一般只有很特殊的需求才会用到的
      

  4.   


    不赞同.
    eval()是NN4以上IE4以上均支持的标准js方法. 这项方法确定字符串是否可以解释成JAVASCRIPT代码, 如果可以就将执行它, 并返回计算的结果. 使用它可以保证js的执行效果. 不过多数情况下不需要使用, 只有在字符串需要进行判断或者将其它的数据类型返转成object时使用. 并不是说因为它不规范而少用.
      

  5.   


    我是说获取dom对象使用eval不规范阿,尤其在多次循环的情况下,ff下性能很低的。而且使用eval也最好用try的。