一个改变图像大小的JS,老出问题,adjustsize这个函数是onLoad时才调用的,可调用的时候它的宽和高竟然都是0,怎么办啊。下面的代码可以弹出“0,0”的对话框。function adjustsize(ImgD)
{
if(ImgD.width >0 && ImgD.height>0)
{
      if(ImgD.width>ImgD.height)
  {
             var temp1=ImgD.width/160;
             var temp2=ImgD.height;
     ImgD.width=160;
     ImgD.height=temp2/temp1;
     ImgD.vspace=ImgD.vspace+(160-ImgD.height)/2;
  }
 else
 {
     var temp1=ImgD.height/160;
     var temp2=ImgD.width;
     ImgD.height=160;
 ImgD.width=temp2/temp1; 
 }
 ImgD.style.visibility="visible";
}
        else
        {
             alert(ImgD.width+","+ImgD.height);
        }
}<td width="200"  align="center"><img style="visibility:hidden" src=photo/13.jpg  vspace=10 border=0  onload="adjustsize(this)"> <br/>
此问题在JS区的地址是
http://community.csdn.net/Expert/topic/5733/5733109.xml?temp=.2805445
解决的哥们顺便去领一下分。

解决方案 »

  1.   

    onLoad的时候可能图片还没的Load进来,当然是0,0了。
    你可以先创建一个Image(在onload之前),把图片load进来再说。var img = new Image();
    img.src="图片地址";
    这个你可以参考一下:http://news.lnwest.com/program/article.asp?id=471要复杂一点的可以看看:
    http://bbs.51js.com/viewthread.php?tid=14837&highlight=
    这样操作,你也不需要用隐藏的IMG标签了
      

  2.   

    回楼上,刚刚开始我也是创建一个Image(在onload之前),把图片load进来,可也是不行啊,部分代码如下:     ImgD.width=160;
         ImgD.height=image.height*160/image.width;
         ImgD.vspace=ImgD.vspace+(160-ImgD.height)/2;
         if(ImgD.height==0)
            alert("高:"+image.height+"  宽:"+image.width+"  字:"+ImgD.vspace );
    奇怪的是在执行了ImgD.width=160;后再判断ImgD.width等于0时,它竟然还等于0。你给的参考我看了,每一个好像和这个问题不大一样,第二个看不懂了,牛人的东东,我还处在入门阶段,以后看。
    觉得现在主要问题就是onload触发时图像的宽 高属性都是0。不知道怎么办啊。回1楼,我的是IE6,你的是什么啊?
      

  3.   

    看看Img标签里有没有什么方法可以解决下载后再去运行啊
      

  4.   

    试了一下你的代码,没有问题咯。
    我的浏览器是IE6,版本 6.0.2900.2180.xpsp_2_gdr.070227-2254
    其实用Image和你这个方法也差不多。理论上来说onload是图片载入完成之后干的事情,你先不要隐藏<img>标签,看看onload是不是正常。说不定还是你图片地址取错了呢。
      

  5.   

    不要在onload事件里调用你的js
    直接把adjustsize函数里面的代码写在页面</html>的后面
      

  6.   

    怎么写啊,楼上的,我刚刚开始学做WEB
      

  7.   

    <td width="200"  align="center"><img style="visibility:hidden" src=photo/13.jpg  vspace=10 border=0 id="image1"> <br/>.....
    adjustsize(document.all("image1"));
    </body></html>
      

  8.   

    <td width="200"  align="center"><img style="visibility:hidden" src=photo/13.jpg  vspace=10 border=0 id="image1"> <br/>.....<script>
         adjustsize(document.all("image1"));
    </script>
    </body>
      

  9.   

    vivi8233(吐司) 的意思是:
    ....
    <img id="img_id" ... />
    ....
    </html>
    <script ....>
    adjustsize("img_id")
    </script> 但是这个方法我觉得还不如onload,毕竟onload是在载入完图片之后触发的事件,而</html>以后图片有可能还没载入进来。不过可以试试这个方法。
      

  10.   

    <img>标签中请输入width和height的初始值,此初始值仅仅为页面打开时图片尚未全部加载完成时限制的显示规格,等加载完成后执行onload就能实现函数的效果。
      

  11.   

    red_berries(我再顶顶) ( ) 信誉:98  2007-08-30 19:04:11  得分: 0  
        哦,谢谢大家了,但还有一个问题就是我的图片太多了啊,怎么使用循环来调用啊?没明白你的意思
    不过一码事算一码事,这个帖先结了吧。嘿嘿。
      
     
      

  12.   

    不是的,是一个问题啊,就是说我有好多的图片呢,总不能一个个来调用啊,怎么通过JS把他们全都给弄住啊。好,结了吧,大家都回答的怪辛苦的。希望大家继续光顾我的下个帖子。
    地址:
    http://community.csdn.net/Expert/topic/5736/5736479.xml?temp=.2180445