在IF中如果有两句以上必须要括起来
for (var i=0;i<document.orderproduct.elements.length;i++)
{
  var e = document.orderproduct.elements[i];
  if (e.id.indexof= 'ShowItem')
                     {
 alert("aa")
 e.style.display = "none";      
                       }
 }

解决方案 »

  1.   

    indexof这个是什么,是自定义的吗?还是自带的,如果是自带的,大小写和用法不对
    indexOf 方法
    返回 String 对象内第一次出现子字符串的字符位置。 strObj.indexOf(subString[, startIndex])参数
    strObj必选项。String 对象或文字。subString必选项。要在 String 对象中查找的子字符串。starIndex可选项。该整数值指出在 String 对象内开始查找的索引。如果省略,则从字符串的开始处查找。说明
    indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回 -1。 如果 startindex 是负数,则 startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。 从左向右执行查找。否则,该方法与 lastIndexOf 相同。示例
    下面的示例说明了 indexOf 方法的用法。function IndexDemo(str2){
       var str1 = "BABEBIBOBUBABEBIBOBU"
       var s = str1.indexOf(str2);
       return(s);
    }
      

  2.   

    我改成这样了
    for (var i=0;i<document.orderproduct.elements.length;i++)
    {
      var e = document.orderproduct.elements[i];
      if (e.id.indexOf("ShowItem")!=-1)
     {
    //alert("aa")
    e.style.display = "none"; 
     }
     }还是不行,郁闷
      

  3.   

    你用alert(e)看看是什么
    再看看
    alert(e.id)
    alert(e.tagName)
    alert(e.style.display)
      

  4.   

    for (var i=0;i<document.orderproduct.elements.length;i++)
    {
      var e = document.orderproduct.elements[i];
      if (e.id.indexOf("ShowItem")!=-1)
     {
    alert("aa")
    e.style.display = "none"; 
     }
     }
    现在是alert都没效果了。
      

  5.   

    谢谢!我form搞错了。这些span在form外。那我怎么办
      

  6.   

    现在在span外加了个form,<form name="ShowComTop" method="post" action=""> for (var i=0;i<document.ShowComTop.elements.length;i++)
    {
      var e = document.ShowComTop.elements[i];
      alert(e);
      if (e.id.indexOf("ShowItem")!=-1)
     {
    alert("aa");
     }
     }第一个alert都不执行了。
      

  7.   

    alert(document.ShowComTop.elements.length);为0,疯了
      

  8.   

    你只想对span进行处理,是吧?
    for (var i=0;i<document.getElementsByTagName("span").length;i++)
    {
      var e = document.getElementsByTagName("span")[i];
      if (e.id.indexOf("ShowItem")!=-1)
     {
    alert("aa")
    e.style.display = "none"; 
     }
     }
      

  9.   

    var e这个定义在循环里面了,名称重定义了,写到外面
    var e
    for (var i=0;i<document.ShowComTop.elements.length;i++)
    {
      e = document.ShowComTop.elements[i];
      alert(e);
      if (e.id.indexOf("ShowItem")!=-1)
     {
    alert("aa");
     }
     }
      

  10.   

    function ShowItem(ItemId)
    {
    for (var i=0;i<document.getElementsByTagName("span").length;i++)
    {
      var e = document.getElementsByTagName("span")[i];
      if (e.id.indexOf("ShowItem")!=-1)
     {
    e.style.display = "none"; 
     }
     }
    var objItem = document.getElementById("ShowItem"+ItemId);
    objItem.style.display = "block";
    }最后一个问题。我想其他的都不显示,只有传入的ItemId的span才显示。可是这样写没效果。
      

  11.   

    试试下面的
    function ShowItem(ItemId)
    {
                     var e
    for (var i=0;i<document.getElementsByTagName("span").length;i++)
    {
      e = document.getElementsByTagName("span")[i];
      if (e.id=="ShowItem"+ItemId)
    {
    e.style.display = ""; 
    }
                      else
                      {
                             e.style.display = "none"; 
                      }
     }
    }
      

  12.   

    你的意思就是只显示一个span,其他都不显示吧,下面有个例子
    <form name=form1>
    <span id="ShowItem1">asdasd</span>
    <span id="ShowItem2">ffdghfgh</span>
    <span id="ShowItem3">ffddddghfgh</span>
    </form>
    <script language=javascript>
    function show(str)
    {
    var obj=document.getElementById("form1").getElementsByTagName("span")
    for(var i=0;i<obj.length;i++)
    {
    if(obj[i].id=="ShowItem"+str)
    {
    obj[i].style.display=''
    }
    else
    {
    obj[i].style.display='none'
    }
    }
    }
    </script>
    <input name=haha type=button value="显示第一个" onclick=show("1")>
    <input name=haha type=button value="显示第二个" onclick=show("2")>
    <input name=haha type=button value="显示第三个" onclick=show("3")>