<script type="text/javascript">
var fileName = null;
var oldFileName = null;
setFileOnChange();

function upload() {
var oldAction = $('form_1').action;
$('form_1').action = "fileupload/fileUploadServlet.do";
$('form_1').method = "post";
$('form_1').enctype = "multipart/form-data";
$('form_1').target = "iframe_hidden";
oldFileName = getFileName();
$('form_1').submit();
addImg();
$('form_1').action = oldAction;
$('form_1').enctype = '';
$('form_1').target = 'self';
} function getFileName(){
return fileName;
}

function setFileOnChange(){
$('file_img').onchange = function(){
fileName = this.value;
}
}

function isNewFile(){
if(oldFileName!=null && oldFileName != fileName){
return true;
}else{
return false;
}
}

function addImg(){
if(alreadyExist()&&isNewFile()){
changeImg();
}else{
append();
}
}

function changeImg(){
var node = $('img_1');
var oldSrc = node.src;
var newSrc = getImgHref();
if(oldSrc != newSrc){
node.src = newSrc;
}else{
setTimeout('changeImg()',1000);
}
}

function append() {
var _src = getImgHref();
if(_src!=null){
var node = document.createElement("img");
node.id='img_1';
node.src = _src;
node.width = "85";
node.height = "100";
$('td_img').appendChild(node);
}else{
setTimeout('append()',1000);
}
}

function alreadyExist(){
var node = $('img_1');
if(node != null){
return true;
}
return false;
} function $(nodeId) {
return document.getElementById(nodeId);
} function getIframe() {
var doc = null;
if (document.all) {//IE
doc = document.frames["iframe_hidden"].document;
} else {//Firefox    
doc = document.getElementById("iframe_hidden").contentDocument;
}
return doc;
} function getImgHref() {
var node = getIframe().getElementById('hidden_imgHref');
if(node!=null){
var v = node.value;
return v;
}
return null;
}
</script>
主要是用来添加img节点的,应该递归的函数现在就执行了一次.不知道这setTimeout哪出了问题.跪求高手解答.

解决方案 »

  1.   

    看你判断条件。。你不是写在else 里面了嘛。。
      

  2.   

    满足else的条件,能够进入setTimeout,但是过了延迟时间1000ms后并不会执行指定的方法append().
    这是最令我郁闷的地方.
      

  3.   

    最终因为setTimeout失效,导致我的递归玩不转.求高手解释
      

  4.   

    回复:Acesidonu
    请问条件哪里有问题?不明白,求解释
      

  5.   

    setTimeout部分执行一次后,继续执行底下的语句执行完了就结束了,没有再返回来执行append();
      

  6.   

    我刚在if 跟 else 里插了alert发现一直在执行else,看来setTimeout没有问题.
    应该是我逻辑写错了,谢谢各位指点