解决方案 »

  1.   

    你下面改成的是因为你之付值过去而已。根本没对对应的进行ID的显示隐藏进行执行
    在if完后加多条document.getElementById("t"+num).style.display=flag;
    不加的话就=赋值给flag,但没运用flag的值<script type="text/javascript">
    function changeimg(num){
    flag = document.getElementById("t"+num).style.display;
    if(flag == "none"){
    flag = "block";
    }else{
    flag = "none";
    }
    document.getElementById("t"+num).style.display=flag;
    }
    </script>
      

  2.   

    你的代码没有改变他的样式
    <script type="text/javascript">
    function changeimg(num){
    var d=document.getElementById("t"+num).style;
    d.display=d.display=='none'?'block':'none'
    }
    </script>
      

  3.   

    flag = document.getElementById("t"+num).style.display;
    得到的是值,而不是对象
    所以对 flag 的改变不会作用到源对象
    缩略写法应是这样的function changeimg(num){
      with(document.getElementById("t"+num).style) {
        if(display == "none"){
          display = "block";
        }else{
          display = "none";
        }
      }
    }
      

  4.   

    这个赞LZ要弄清楚变量类型, 到底是引用类型还是值类型. 这里的flag在赋值时, 实际上是赋上了一个字符串类型的值, 不是引用类型. 所以你怎么改变flag都不会影响到display的属性. 而引用则不同, 一处改, 其它指向它的值, 相应的都会变化. 弄清楚了才知道为什么有的时候改动一个变量里面的值其它地方也会变化而有的时候又不会了
      

  5.   

    这个问题纯粹是自己疏忽了。显示隐藏是HTML元素style样式的一个属性正如这个。
    document.getElementById("t"+num).style.display在这个里面style前面的是dom节点。
    style后面那个display是样式下面一个属性。你应该将显示隐藏赋给对象document.getElementById("t"+num).style.display这个上
    而你下面那个flag仅仅是一个值不是对象所以不行了
      

  6.   

    很多规范都说过不要用with了,为什么不这么写function changeimg(num){
      var style = document.getElementById("t"+num).style;
      if(style.display==='none'){
    style.display = 'block';
      }else{
    style.display = 'none';
      }
    }