我刚做了个验证码的img标签。
代码如下
<img name="imgcode" id="imgcode" src="SecurityCode.aspx" alt="点击刷新验证码"  />
<a href="#" onclick="reloadcodepage()">点击刷新验证码</a>js代码如下
        function reloadcodepage() {
            var obj = document.getElementById("imgcode");
            obj.src = "SecurityCode.aspx";
        }这个页面SecurityCode.aspx实际上我是一个生成图片的页面,每次都会生成不同的图片。
所以我点击一次刷新,就改变一次img的src属性,但是,我这样操作之后发觉是无效的。
然后我将js最后一句代码改为:
                      obj.src = "SecurityCode.aspx?name=1";
再次执行代码后,第一次点击刷新我发觉验证码正确了,但是第二次点击时候又没有变化了。
由此:我大胆的推断,给DOM属性赋值时如果元素的属性值已经要赋的值相同   (原来值=即将赋的值) 那么DOM元素的属性值并不是重新赋予的,而是保留了原来的。不知道这个细小的问题大家发觉没有?并且能不能解决。当然我有很多种办法来达到我想要的效果,但是能直接正常化的解决是最好的。按理论我的代码就应该每次重新加载src属性,由于SecurityCode.aspx是一张动态验证码图片,所以我觉得我代码完全是没问题的。我并不想通过不同的参数来达到我的目地,所以在此一问了。

解决方案 »

  1.   

    思考的方向是对滴,原理也大致猜到。
    传一个date参数进去,每次new的时候date显然都不一样的,这样系统认为是另一个请求,否则就是你看到的那样。
      

  2.   

    方法不是告诉你了嘛,你传了个"?name=1"参数不就变了一次么,如果你传个new Date()进去不就解决啦!即每次点击的时候系统都认为是新请求撒
      

  3.   

    楼主真有趣。obj.src = "SecurityCode.aspx?t="+(new Date - 0);
      

  4.   

    lz不知道IE有缓存的吧...URL加个Math.random()就OK了
      

  5.   


    你现在的提交方式 是 get 提交  所以  改变 传给后台的数据 只能是 通过 url 来传递参数..这个也是  内部的一个机制..  好像是  (程序的运行环境)如果路径一样   那么直接给你返回 上次这个路径所返回的结果..  不会在执行一遍代码..  我的理解是这样的 ..  哪里不对 希望指出来   
      

  6.   

    小小的验证了一下:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script type="text/javascript">
    var img = new Image();
    var c = 0;
    img.onload = function(){
    z();
    console.log("S:"+c);
    }
    img.onerror = function(){
    z();
    console.log("E:"+c);
    }
    img.src = "http://www.baidu.com/img/baidu_sylogo1.gif";


    var z =function(){
    c++;
    //console.log("Get:"+c);
    if(c == 1){
    //img.src = "about:blank";
    img.src = "http://www.baidu.com/img/baidu_sylogo1.gif?a=2";
    }
    if(c == 2 ){
    img.src = "http://www.baidu.com/img/baidu_sylogo1.gif";
    }

    }
    </script>
    </head>
    <body>

    </body>
    </html>
    Chrome14 , FF7 下的结果
    1:赋的值与原来的值相同,不会触发onload及http请求
    2:赋值不同会触发onload及http请求 (屁话)
    3:第一次赋值a,第二次赋值b,第三次再赋值a的话,3次均会触发onload,但第三次不会触发http请求奇怪的是IE9在IE9下,测试第三种情况,第一次访问的时候会发出两个http请求,分别为xxx.gif和xxx.gif?a=2
    然后刷新(包括强制刷新)就只会发出一个http请求xxx.gif  
      

  7.   

    一般不是加个时间戳吗。很多地方都是这么用
    ps.图片好像一般是ashx生成