问题描述
如果给的建议能解决问题将追加更多的分。javascript实现的功能如下见附件图片,能显示图片,能上传,但是选了文件上传后,再次回到此页面的时候 下面的这些就都不见了。因为Prepare函数没有触发。用的是struts2,首次进入页面,很正常,用javascript显示的上传图片的按钮 组件什么的都正常显示,但是当我选了一个图片上传,点击保存,然后后台保存完之后还是跳回到这个页面,这时候window.onload=Prepare;就不执行了,图片也不显示了,好像javascript都失效了。 但是如果不上传图片,直接点击保存的话跳回来页面还是能正常显示的,只有在传了图片后页面才不正常。但是后台的保存图片什么的没有什么问题的而且也没什么关系,不知道问题在哪。 下面是代码,<script type="text/javascript">// <![CDATA[ window.onload=Prepare; function Prepare(){ var str,filestr=""; // var address='<s:property value="myUser.photoaddress" />'; var address=document.getElementById("photoaddress").value; var pic=address.split(','); var li=" "; if(pic!=''){ for( var i=0; i< pic.length; i++){ li=li+'<li><img src="images'+pic[i]+'" width="61" height="61"/><input type="button" value="删除" onclick="delphoto('+i+')" /></li>'; } } str='<ul id="gallery">'+li+'</ul>'; if(pic!=''){ for(var j=0;j<4-pic.length;j++){ filestr+='<p><s:file name="photo" ContentEditable="false" theme="simple"/></p>'; } }else{ for(var j=0;j<4;j++){ filestr+='<p><s:file name="photo" ContentEditable="false" theme="simple"/></p>'; } } document.getElementById("divHtml").innerHTML=str; document.getElementById("dfile").innerHTML=filestr; } function delphoto(i){ var address=document.getElementById("photoaddress").value; var pic=address.split(','); if(i==pic.length-1){ if(pic.length==1){ address=address.replace(pic[i], ''); }else{ address=address.replace(','+pic[i], ''); } }else{ address=address.replace(pic[i]+',', ''); } //ajaxtool.deletePhoto(pic[i],function(data){///ajax调用后台删除方法 // }); var delep=document.getElementById("deletedphoto"); delep.value=delep.value+pic[i]+","; var p=document.getElementById("photoaddress"); p.value=address; Prepare(); } // ]]></script>
解决方案
在【function Prepare(){】上面和下面各写一个alert语句,能否执行呢
解决方案二:
<img src="images' 请改成绝对路径试试 估计上传成功后 你是使用forward显示 此时计算相对路径可能出问题
解决方案三:
上传后到页面把<s:property value="myUser.photoaddress" />alert出来看看都是什么