可能是你拼凑对象的ID没有拼好吧, 改了你的代码, 用模糊匹配:
function ShowAllData()
{
  var a = document.getElementsByTagName("SPAN");
  for(var i=0; i<a.length; i++)
  {
    if(a[i].id && a[i].id.test(/^MySpan.+/))
    {
      a[i].style.display = a[i].style.display=="none" ? "" : "none";
    }
  }
}

解决方案 »

  1.   

    <style type="text/css" id="Style1" disabled>
    span.haha { display:none; }
    </style><input type="button" value="显示/隐藏" onclick="Style1.disabled=!Style1.disabled"><span id="s1" class="haha">aaaaaa</span>
    <span id="s2" class="haha">aaaaaa</span>
    <span id="s3" class="haha">aaaaaa</span>
    <span id="s4" class="haha">aaaaaa</span>
    <span id="s5" class="haha">aaaaaa</span>
    <span id="s6" class="haha">aaaaaa</span>
    <span id="s7" class="haha">aaaaaa</span>
    <span id="s8" class="haha">aaaaaa</span>
    <span id="s9" class="haha">aaaaaa</span>
      

  2.   

    document.getElementById(str)可能对象得到错误
    你可以先
    temp=document.getElementById(str)
    然后判断if(temp!=null))temp.style.display = ''
    这样就没有问题了